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

Rus*_*ari 4 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();
Run Code Online (Sandbox Code Playgroud)

Jon*_*onH 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`
Run Code Online (Sandbox Code Playgroud)

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