2011-10-26 69 views
4

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

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(); 

回答

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` 

在这种情况下活性片是你,你已存储在数组中片材的基团。

+0

哈哈我跑了同样的东西嗯kk我认为转换可能是最好的路线谢谢 –

+0

罗素萨里 - 验证这只是打开excel,手动做这个,你会看到会发生什么。如果您不使所有工作表都处于活动状态,则代码将仅打印出第一个工作表(活动工作表)。你需要确保你使用ctrl键并点击每张纸,然后看看excel文件的顶部(名称区)将变成'[group]',然后保存为pdf。 – JonH

+0

谢谢我会将你的问题标记为正确的我几乎已经完成了如果没有问题,我会在你的回答中发帖?\ –

相关问题