当前位置: 首页 > wzjs >正文

欧洲购物网站排名文创做的好的网站推荐

欧洲购物网站排名,文创做的好的网站推荐,网站建设费用一年多少钱,h5商城网站模板下载初级代码游戏的专栏介绍与文章目录-CSDN博客 的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源码…

初级代码游戏的专栏介绍与文章目录-CSDN博客

的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        前一篇VSTO(C#)Excel开发4:打印设置-CSDN博客

        Excel打印可以直接把表格打印到一页,但是用的是缩放的方法,而且不会改变纵横比例,如果比例不合适,会留下大片空白。如果我们希望不要缩放而是通过改变列宽和行高来平均铺满纸张呢?

        前面研究了打印设置,发现并没有很简单的方法通过直接计算来把表格铺满一页,怎么办呢?幸好PageSetup.Pages.Count总是正确指示一共有多少页,因此可以用一些技巧来实现调整行宽和列高来使表格铺满一页。

        这是纯粹的编程技巧,或者说算法,不包含任何新的关于对象模型的知识点。

目录

一、算法思想

二、源码

三、效果

四、算法详解

1.1 获取初始值

1.2 步进值step

1.3 增量的计算


一、算法思想

        虽然我不知道厘米、磅、字符宽度、像素之间什么关系,但是我们可以通过尝试调整列宽和行高,找到刚好是一页纸的最佳值。

        一个最简单的思路就是把所有行和列都设为最小值,然后一点一点增加,直到打印页面变为2,最后回到之前的值即可。

        每一步增加的值存在一个合理的最小单位,低于最小单位的差异是没有意义的,因为打印机的精度不高,肉眼的精度更低。

        步子太小需要尝试很多次,很容易想到先尝试较大的步子,再逐渐缩小步子,算法上类似于用二分查找替代线性查找。

二、源码

        源码用了一个新按钮,按钮我们很熟了,就不重复说了。按钮名字叫“button_FitToOnePage”,单击事件的代码如下:

		private void button_FitToOnePage_Click(object sender, RibbonControlEventArgs e){string str = "开始操作。。。。。。\n";try{Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;Range usedRange = worksheet.UsedRange;int firstColumn = usedRange.Column;int columnCount = usedRange.Columns.Count;int firstRow = usedRange.Row;int rowCount = usedRange.Rows.Count;str += " Pages:" + worksheet.PageSetup.Pages.Count + "\n";double originalTotalWidth = 0;double originalTotalHeigh = 0;double[] originalWidth = new double[columnCount];double[] originalHeight = new double[rowCount];for (int i = 0; i < columnCount; ++i){Range colum = worksheet.Columns[firstColumn + i];originalWidth[i] = colum.ColumnWidth;originalTotalWidth += colum.ColumnWidth;}for (int i = 0; i < rowCount; ++i){Range row = worksheet.Rows[firstRow + i];originalHeight[i] = row.RowHeight;originalTotalHeigh += row.RowHeight;}str += " originalTotalWidth:" + originalTotalWidth + "\n";str += " originalTotalHeigh:" + originalTotalHeigh + "\n";double step = 100;//步进,如果超出一页就减小步进值,直到步进小于某个值double fix = 0;while (worksheet.PageSetup.Pages.Count == 1 && step >= 0.1)//注意列宽单位是标准字符{fix += step;for (int i = 0; i < columnCount; ++i){Range colum = worksheet.Columns[firstColumn + i];colum.ColumnWidth = originalWidth[i] + fix * 0.1;}if (worksheet.PageSetup.Pages.Count > 1){fix -= step;step /= 2;for (int i = 0; i < columnCount; ++i){Range colum = worksheet.Columns[firstColumn + i];colum.ColumnWidth = originalWidth[i] + fix * 0.1;}}}str += " Pages:" + worksheet.PageSetup.Pages.Count + "\n";step = 100;fix = 0;while (worksheet.PageSetup.Pages.Count == 1 && step >= 1)//注意行高单位是像素{fix += step;for (int i = 0; i < rowCount; ++i){Range row = worksheet.Rows[firstRow + i];row.RowHeight = originalHeight[i] + fix;}if (worksheet.PageSetup.Pages.Count > 1){fix -= step;step /= 2;for (int i = 0; i < rowCount; ++i){Range row = worksheet.Rows[firstRow + i];row.RowHeight = originalHeight[i] + fix;}}}str += " Pages:" + worksheet.PageSetup.Pages.Count + "\n";str += "操作成功完成\n";worksheet.PrintPreview();}catch (Exception ex){MessageBox.Show(ex.ToString());}MessageBox.Show(str);}

三、效果

        先执行button1得到一些数据:

        按钮AutoFit就是AutoFit,之前的源码提出来的。

        button_FitToOnePage的label是FitToOnePage,点一下:

        自动打开了打印预览,确实看到平铺成一页了。

        注意这个代码只能把填不满的放大,如果已经是超过一页是不会去缩小的。

四、算法详解

1.1 获取初始值

        代码中除了PageSetup.Pages.Count是每次都重新取,要处理的范围是一开始获取到后存成简单变量,不会再动态获取的,这是一个编程的好习惯,很多值可能在运行中被并行修改,可能会导致程序异常。比如有数据的列数,如果代码正在运算同时手工改变了数据,那么存原始值的数组没有变,代码使用新的列数会导致出错。

1.2 步进值step

        步进值从一个比较大的数开始,然后循环增加列宽或行高,如果超出一页就退回上一次的值,并把step减半,step设置了最小值,低于最小值就结束。

1.3 增量的计算

        列宽单位是字符,最小step设置为0.1,行高单位是像素,最小设置为1好了。

        编程的很多技巧是纯算法的,整个功能在完全不理解各种参数的实际意义的情况下就完成了,而且适应任何变化(意即没有任何不必要的假设)。


(这里是文档结束)


文章转载自:

http://zhSsZhgC.mgfnt.cn
http://sCkGRVjs.mgfnt.cn
http://soVR9Aiq.mgfnt.cn
http://FOKhrtpd.mgfnt.cn
http://okgDRhMr.mgfnt.cn
http://aGwuNav8.mgfnt.cn
http://gDN6iqTh.mgfnt.cn
http://Y6yt2SdN.mgfnt.cn
http://CCLhdORt.mgfnt.cn
http://9DBQeHUN.mgfnt.cn
http://83vcwVwJ.mgfnt.cn
http://EEaKvNp4.mgfnt.cn
http://6eweLBNn.mgfnt.cn
http://JQ4hdIcv.mgfnt.cn
http://7FqF5WpD.mgfnt.cn
http://UDT0XjYx.mgfnt.cn
http://yOcEBi7x.mgfnt.cn
http://FtdU9NAX.mgfnt.cn
http://h7FWwq9w.mgfnt.cn
http://2RPi547l.mgfnt.cn
http://GPJQcwLZ.mgfnt.cn
http://SjAyFNgn.mgfnt.cn
http://y8ZniSAF.mgfnt.cn
http://kZ05D2L2.mgfnt.cn
http://ZNpAF0aA.mgfnt.cn
http://2YH3AW75.mgfnt.cn
http://s3ybymot.mgfnt.cn
http://iwFQWN4D.mgfnt.cn
http://eHggefqP.mgfnt.cn
http://DfdO6KPf.mgfnt.cn
http://www.dtcms.com/wzjs/761441.html

相关文章:

  • 深圳龙华新区住房和建设局网站神农架网站建设公司
  • 可以直接进入的舆情网站公司做的网站搜索不到
  • 为网站开发android客户端做网站改变图片位置
  • 万网如何做网站中国纪检监察报评论员文章
  • 太原建网站的公司百度我的订单
  • 上海网站建设模板最专业的企业营销型网站建设公司
  • 做网站时图片要切片有什么作用噼里啪啦免费观看高清动漫
  • 官方网站免费建设购物类网站
  • delphi xe10网站开发国内重大新闻2022
  • 崆峒区城乡建设局网站企业网站制作教程
  • 创业做旅游网站开发网页游戏平台
  • 网站管理是什么工作wordpress新建文章随机一个阅读量
  • 网站建设需要什么技术网站里会自动换图怎么做
  • 宁慈建设网站淄博学校网站建设报价
  • 设计网站什么叫空间不稳定统计站老站长推荐app视频
  • 创意响应式网站建设线上招生代理平台
  • 网站描述标签3d做ppt模板下载网站
  • 怎么做网站站内搜索九福在线代理网页
  • 建设网站后如何做后台便宜建站
  • 高埗镇网站建设公司成都网站制作服务
  • 企业官网属于什么网站南通网站排名团队
  • 微餐饮网站建设平台google商店
  • 给一瓶水做网站不会写代码怎样做网站
  • .net网站开发环境WordPress添加防盗链接
  • 达州大亚网站建设如何创建一个软件
  • wordpress站点的临时域名wordpress 用户中心插件
  • 网站前置审批 查询做服装外贸哪个网站好
  • 网站制作动态转静态怎么做wordpress 获取所有标签
  • html5网站开发的源码上海搬家公司排名
  • 北京市住房和城乡建设网站如何防范恶意网站