1

我正在使用 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
前 5 列打印在第 1 页
下 5 列打印在第2 页上
5 列打印在第 3 页
并且执行停止(或继续到下一张)

我认为答案在某个地方(但我不太确定):

((Microsoft.Office.Interop.Excel._Worksheet)excelApp.ActiveSheet).PageSetup.Pages
4

1 回答 1

4

您应该能够通过 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。

于 2012-08-20T16:13:34.413 回答