c# excel print 打印 將所有列調整為一頁


excel有時候列數比較多,行數也比較多,轉換成xps文檔的時候,一般是通過打印來實現。

由於打印的范圍限制,所以會出現本來在一行的數據,由於列數比較多,溢出范圍,被打印到兩頁了。

為解決這個問題,需要設置一下sheet的縮放。

1.測試縮放在excel程序中:

在excel程序中有打印設置,如圖(默認是無縮放的):

設置縮放(將所有列調整為一頁),如圖:

經過測試,這樣設置后的打印效果,同一行的數據打印后在同一頁了。

2.c#代碼實現:

代碼實現的方式是設置WorkSheet的PageSetup.FitToPagesTall屬性。

測試代碼如下:

 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

 

經驗證,可行。

感謝每一位閱讀此篇文章的人,希望可以幫到你。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM