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

VSTO(C#)Excel开发4:打印设置

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

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

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

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


        前一篇:VSTO(C#)Excel开发3:Range对象 处理列宽和行高-CSDN博客

        前一篇我们已经知道了如何设置列宽和行高,那么如何将控制打印呢?

目录

一、打印设置 页面设置 PageSetup

1.1 打印区域PageSetup.PrintArea

1.2 纸张大小PageSetup.PaperSize

1.3 纸张方向PageSetup.Orientation

1.4 页边距 PageSetup.TopMargin等

1.5 页数 PageSetup.Pages.Count

1.6 缩放 PageSetup.Zoom

1.7 缩放到一页 PageSetup.FitToPagesWide

1.8 打印预览Worksheet.PrintPreview()

二、示例代码

 三、困惑 如何知道打印区域的大小呢 标准字符宽度又是多少呢


一、打印设置 页面设置 PageSetup

        与打印和页面有关的设置在Worksheet对象的PageSetup属性里,PageSetup里包含了常用的纸张大小、横向纵向、页边距等设置。

1.1 打印区域PageSetup.PrintArea

        是一个Range,没有设置的话默认打印所有表格。

1.2 纸张大小PageSetup.PaperSize

        这是预定义的值,枚举值xlPaperSize,很容易查到文档:

1.3 纸张方向PageSetup.Orientation

        也是个枚举:

1.4 页边距 PageSetup.TopMargin等

        四个边距,Top是上边距……

        单位是磅。各种单位混用真是很晕啊。

1.5 页数 PageSetup.Pages.Count

        这是一共有多少页。Pages是Page的集合,但Page没什么属性和方法。我以为会有这一页上打印哪些单元格呢,但是并没有。

1.6 缩放 PageSetup.Zoom

1.7 缩放到一页 PageSetup.FitToPagesWide

        缩放和缩放到一页是冲突的功能啊,要先设置缩放为false缩放到一页才能生效。

1.8 打印预览Worksheet.PrintPreview()

        调出打印预览可以用Worksheet.PrintPreview()。

二、示例代码

        还是之前的按钮二,改了代码,新建一个按钮也行,没所谓的。

		private void button2_Click(object sender, RibbonControlEventArgs e)
		{
			string str = "开始操作。。。。。。\n";
			try
			{
				Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;
				Range usedRange = worksheet.UsedRange;
				str += " UsedRange:" + usedRange.Address + "\n";
				str += " UsedRange.Column:" + usedRange.Column + "\n";
				str += " UsedRange.Columns.Count:" + usedRange.Columns.Count + "\n";
				str += " UsedRange.Row:" + usedRange.Row + "\n";
				str += " UsedRange.Rows.Count:" + usedRange.Rows.Count + "\n";
				str += " PrintArea:" + worksheet.PageSetup.PrintArea + "\n";
				str += " PaperSize:" + worksheet.PageSetup.PaperSize.ToString() + "\n";
				str += " ChartSize:" + worksheet.PageSetup.ChartSize + "\n";
				str += " Orientation:" + worksheet.PageSetup.Orientation.ToString() + "\n";
				str += " TopMargin:" + worksheet.PageSetup.TopMargin + "\n";
				str += " BottomMargin:" + worksheet.PageSetup.BottomMargin + "\n";
				str += " LeftMargin:" + worksheet.PageSetup.LeftMargin + "\n";
				str += " RightMargin:" + worksheet.PageSetup.RightMargin + "\n";
				str += " Pages:" + worksheet.PageSetup.Pages.Count + "\n";

				//worksheet.PageSetup.Zoom = false;//设置为false才能Fit
				//worksheet.PageSetup.FitToPagesWide = 1;

				double originalTotalWidth = 0;
				double originalTotalHeigh = 0;

				for (int i = 0; i < usedRange.Columns.Count; ++i)
				{
					Range colum = worksheet.Columns[usedRange.Column + i];
					originalTotalWidth+=colum.ColumnWidth;
				}
				for (int i = 0; i < usedRange.Rows.Count; ++i)
				{
					Range row = worksheet.Rows[usedRange.Row + i];
					originalTotalHeigh+=row.RowHeight;
				}
				str += " originalTotalWidth:" + originalTotalWidth + "\n";
				str += " originalTotalHeigh:" + originalTotalHeigh + "\n";

				str += "操作成功完成\n";
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.ToString());
			}
			MessageBox.Show(str);
		}

        就把上面讲的属性显示了一下,最后一段计算了总的宽度和高度。

        可以先按一下button1,再按一下button2,输出:

        对照代码一看就明白了。(高度少打一个字母t啊,不好意思)

 三、困惑 如何知道打印区域的大小呢 标准字符宽度又是多少呢

        纸张尺寸是标准的,可以查,单位是厘米,页边距是磅,列宽是标准字符宽度,行高是像素,这也太随意了。

        标准字符宽度又是个和字体相关的值,没有简单的方法获取。

        好吧,就这样,毕竟我的目标只是打印到一页,即使没有这些值也有办法。


下一篇VSTO(C#)Excel开发5:调整表格到一页-CSDN博客


(这里是文档结束)


http://www.kler.cn/a/582390.html

相关文章:

  • Mac java全栈开发环境配置
  • MATLAB代码开发实战:从入门到高效应用
  • 基于springboot + vue 的实验室(预约)管理系统
  • 3. 自定义类型****
  • 批量给 Excel 表格添加文字和图片水印
  • Java程序开发之Spring Boot快速入门:5分钟搭建RESTful API
  • 以下是基于文章核心命题打造的15个标题方案,根据传播场景分类推荐
  • 在线商城服务器
  • c++介绍线程的屏障 八
  • C++入门——内联函数、auto关键字、基于范围的for循环
  • FastDDS中Utils定义的那些数据结构(二)
  • 【TMS570LC4357】之工程创建
  • UE5.5 Niagara 发射器粒子更新模块
  • 基于SpringBoot的租房管理系统实现与设计
  • 用C# Newtonsoft.Json库实现JSON数据中某个字段值的提取
  • LLM最新的模型微调技术有哪些
  • 爬虫一些基础知识的备忘录(需要自取)
  • 【Academy】SSRF ------ Server-side request forgery
  • 2025年是Matter智能家居至关重要的一年?
  • NetAssist 5.0.14网络助手基础使用及自动应答使用方案