Excel到PDF导出 - 页码限制

时间:2012-08-20 15:04:06

标签: c# excel

我正在使用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

1 个答案:

答案 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。