将整个工作簿另存为PDF Excel 2010(C#)

时间:2011-10-26 17:50:14

标签: c# excel

无论如何都要将整个工作簿保存为excel中的pdf。我发现了这个http://msdn.microsoft.com/en-us/library/bb407651(v=office.12).aspx,但它并没有告诉你它是将整个工作簿保存为pdf还是只保存活动工作表。如果无法将整个工作簿保存为pdf,那么打印整个工作簿是最佳选择,还是可能在C#中?以下是我到目前为止我只需要保存为pdf所以我可以发送电子邮件。谢谢你的帮助。

using Excel = Microsoft.Office.Interop.Excel; //Excel Reference

//Gets Excel and gets Activeworkbook and worksheet

Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oSheet;

//Create New Instance in Excel
oXL = new Excel.Application();
oXL.Visible = true;

//Open Excel Workbook
oWB = oXL.Workbooks.Open("");
oWB = (Excel.Workbook)oXL.ActiveWorkbook;
oSheet = (Excel.Worksheet)oWB.ActiveSheet;

//Modify Excel Spreadsheet Based on Form
oSheet.Cells[6, 4] = maskedTextBox1.Text; //Change Value in Cell, Cell Location [y-axis, x-axis]

//Save Workbook As
oWB.SaveAs("");

//Save Workbook As PDF


//Close Workbook
oWB.Close("");

//Quit Excel
oXL.Quit();

1 个答案:

答案 0 :(得分:6)

2010年,您可以将每张工作表设为“活动”工作表,从而将整个工作簿保存为PDF。 听起来很奇怪但是如果你在做PDF格式时注意到打印选项,则没有工作簿选项。要解决这个问题,请打开一个excel文件并在2-3个工作表中填写一些数据。现在按住您的ctrl键并单击其他工作簿,它将成为“组”。

您会注意到[GROUP]名称出现在Excel文件的顶部,现在当您打印excel文件时,它将打印整个工作簿。

亲自尝试一下。在代码中,您只需要使每个工作表成为活动工作表。我对excel对象模型的工作量不大,但可能值得为此做一个宏并查看代码。

我录制了一个宏,这里是VBA:

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

看起来好像你只需要将每个工作表存储在一个数组中然后只需

Sheets(MyArray).Select

然后,这将使所有工作表处于活动状态并[分组],然后您可以将打印输出到pdf。通过录制宏,它还提供了打印到pdf的选项:

`ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\MyAccount\Desktop\test.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True`

在这种情况下,活动工作表是您存储在数组中的工作表组。