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();
經驗證,可行。
感謝每一位閱讀此篇文章的人,希望可以幫到你。