我正在使用C#将Excel文件转换为PDF。 这是我到目前为止的代码:
Excel.Application excelApp = new Excel.Application();
excelApp.Workbooks.Open(infile, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
excelApp.ActiveWorkbook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, outfile);
excelApp.DisplayAlerts = false;
excelApp.SaveWorkspace();
excelApp.Quit();
该部分有效,但有时候我的文件超过20个列,输出“打破”到PDF上的多个页面。
有没有办法控制我想要允许多少“休息”?
例如。
让我们说这张纸有25列
我输了一个例子。 3
在第1页上打印前5列
接下来的5列打印在第2页上
接下来的5列打印在第3页上
并且执行停止(或继续到下一张)
我认为答案就在这里(但我不太确定):
((Microsoft.Office.Interop.Excel._Worksheet)excelApp.ActiveSheet).PageSetup.Pages
答案 0 :(得分:3)
您应该可以通过PageSetup类完成此操作并选择适当的PrintArea。对于PDF转换,我们使用'FitToPages'功能缩放视图,以便每个工作表只占用一页。
_Workbook document = application.Workbooks.Open(FileName,
oFalse, oTrue, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oFalse, oFalse, oMissing, oFalse,
oFalse, oFalse);
foreach (Worksheet ws in document.Worksheets.OfType<Worksheet>())
{
ws.PageSetup.Orientation = XlPageOrientation.xlLandscape;
ws.PageSetup.Zoom = false;
ws.PageSetup.FitToPagesWide = 1;
ws.PageSetup.FitToPagesTall = false;
}
document.ExportAsFixedFormat(fxFormat, fileName,
oMissing, oMissing, oFalse, oMissing,
oMissing, oFalse, oMissing);
或者您可以设置打印区域而不是缩放:
// Specified in the same range format as the UI
ws.PageSetup.PrintArea = "a1-e50";
您可能需要从ws。UsedRange属性中获取已使用的列和行,以提供正确的打印区域。确保在调用'ExportAsFixedFormat'时,为IgnorePrintAreas参数提供false。