excel有时候列数比较多,行数也比较多,转换成xps文档的时候,一般是通过打印来实现。
由于打印的范围限制,所以会出现本来在一行的数据,由于列数比较多,溢出范围,被打印到两页了。
为解决这个问题,需要设置一下sheet的缩放。
1.测试缩放在excel程序中:
在excel程序中有打印设置,如图(默认是无缩放的):
![](https://images2015.cnblogs.com/blog/874602/201606/874602-20160630155006031-476217158.png)
设置缩放(将所有列调整为一页),如图:
![](https://images2015.cnblogs.com/blog/874602/201606/874602-20160630155048531-686672277.png)
经过测试,这样设置后的打印效果,同一行的数据打印后在同一页了。
2.c#代码实现:
代码实现的方式是设置WorkSheet的PageSetup.FitToPagesTall属性。
测试代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
2 Type tp = app.GetType();
3 Microsoft.Office.Interop.Excel.Workbooks workBook = app.Workbooks;
4 Type elType = workBook.GetType();
5 object objelName = sourceFile;
6 Microsoft.Office.Interop.Excel.Workbook ebook = (Microsoft.Office.Interop.Excel.Workbook)elType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, workBook, new Object[] { objelName, true, true });
7 Object missing = System.Reflection.Missing.Value;
8 for (int i = 0; i < ebook.Worksheets.Count; i++)
9 {
10 Worksheet ws = ebook.Worksheets[i + 1];
11 ws.PageSetup.Orientation = XlPageOrientation.xlPortrait;//页面方向竖向
12 ws.PageSetup.Zoom = false;
13 ws.PageSetup.FitToPagesWide = 1;
14 ws.PageSetup.FitToPagesTall = false;
15 }
16 ebook.PrintOut(missing, missing, missing, missing, missing, true, missing, xpsFile);
17 tp.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, app, null);
18 workBook.Close();
19 app.Quit();
View Code
经验证,可行。
感谢每一位阅读此篇文章的人,希望可以帮到你。
|