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

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

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

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

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


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

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

目录

[一、打印设置 页面设置 PageSetup](#一、打印设置 页面设置 PageSetup)

[1.1 打印区域PageSetup.PrintArea](#1.1 打印区域PageSetup.PrintArea)

[1.2 纸张大小PageSetup.PaperSize](#1.2 纸张大小PageSetup.PaperSize)

[1.3 纸张方向PageSetup.Orientation](#1.3 纸张方向PageSetup.Orientation)

[1.4 页边距 PageSetup.TopMargin等](#1.4 页边距 PageSetup.TopMargin等)

[1.5 页数 PageSetup.Pages.Count](#1.5 页数 PageSetup.Pages.Count)

[1.6 缩放 PageSetup.Zoom](#1.6 缩放 PageSetup.Zoom)

[1.7 缩放到一页 PageSetup.FitToPagesWide](#1.7 缩放到一页 PageSetup.FitToPagesWide)

[1.8 打印预览Worksheet.PrintPreview()](#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()。

二、示例代码

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

cs 复制代码
		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博客


(这里是文档结束)

相关推荐
2501_9307077825 分钟前
C#:将Excel转换为HTML时将图像嵌入HTML中
excel
咬尾巴的猫在coding33 分钟前
pandas读取和写入excel
excel·pandas
mudtools3 小时前
.net操作Excel:图表 (Chart) 的创建与定制
c#·.net·excel·wps
码农学院3 小时前
Excel批量导入到数据库的方法
数据库·oracle·excel
云澈ovo11 小时前
AI+传统工作流:Photoshop/Excel的智能插件开发指南
人工智能·excel·photoshop
少陽君1 天前
两个表格(Excel/CSV)字段不完全一致,要合并在一起
excel
Excel_easy1 天前
Excel文件瘦身指南:快速瘦身,告别卡顿-Excel易用宝
excel
刘火锅1 天前
Java读取Excel图片技术详解:悬浮式与嵌入式图片的三种实现方案(支持WPS嵌入和Office Excel嵌入)
java·excel·wps
未来之窗软件服务1 天前
万象EXCEL开发(二)格式解读sharedStrings.xml——东方仙盟练气期
xml·excel·仙盟创梦ide·东方仙盟·万象excel·东方仙盟格式
笨蛋不要掉眼泪1 天前
SpringBoot项目Excel模板下载功能详解
java·spring boot·后端·spring·excel·ruoyi