无论如何都要将整个工作簿保存为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();
答案 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`
在这种情况下,活动工作表是您存储在数组中的工作表组。