如何“逐页”将Excel工作簿保存或导出为PDF文件?

时间:2012-08-06 20:31:06

标签: c# .net excel excel-interop worksheet

我所拥有的代码的问题是它将所有页面保存在工作簿中的所有工作表中,或者只保存“from”和“to”参数指定范围内的页面。

我正在使用的excel文件有7个工作表,每个工作表可以有任意数量的页面。例如,如果我指定要从“1到4”导出,则只将第一个工作表的前4页导出为PDF文档,而不是前4个工作表的所有页面。

有人可以告诉我如何实现我想要做的事情吗?下面的代码不是我想要的:

application.ActiveWorkbook.ExportAsFixedFormat(
      Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF,
      path,
      Excel.XlFixedFormatQuality.xlQualityStandard,
      true,
      true,
      1,
      4,
      false,
      Missing.Value);

3 个答案:

答案 0 :(得分:2)

如果您在选择多张纸之后使用ActiveSheet.ExportAsFixedFormat,我认为它会做您想要的(只要您在每张选定的纸张上设置了打印区域)。

沿着这些线记录的原始宏:

    Sheets(Array("Sheet1", "Sheet2")).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Documents and Settings\yourusername\Desktop\Book1.pdf", _  
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= False

答案 1 :(得分:0)

以下是答案:ActiveSheet.PageSetup.Pages.Count

答案 2 :(得分:-1)

Public Sub Export(ParamArray ToPrint() As Variant)

'hide all sheets
For Each Sheet In ActiveWorkbook.Sheets

    Sheet.Hide

Next Sheet

'unhide sheets to print
For Each pageNo In ToPrint

ActiveWorkbook.Sheets(pageNo).Show

Next pageNo

'do the export
    Worksheet.ExportAsFixedFormat _
        Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, _
        Path, _
        Excel.XlFixedFormatQuality.xlQualityStandard, _
        True, _
        True, _
        Nothing, _
        Nothing, _
        False, _
        Missing.Value

'unhide all sheets
For Each Sheet In ActiveWorkbook.Sheets

    Sheet.Show

Next Sheet

End Sub

通过传入逗号分隔的工作表列表来调用它来导出

Export 1, 2, 4