我有一个Excel文件。
我需要打开它,从中选择特定的纸张,然后将这些纸张转换为PDF格式。我能够转换整个excel文件,我只是不知道如何只转换特定的工作表。
我的想法是将特定工作表从现有文件复制到新的临时文件,并将整个新临时文件转换为PDF。
也许有更简单的方法?
到目前为止我的代码是=>
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
public static void ExportExcel(string infile, string outfile, int[] worksheets)
{
Excel.Application excelApp = null;
Excel.Application newExcelApp = null;
try
{
excelApp = new Excel.Application();
excelApp.Workbooks.Open(infile);
//((Microsoft.Office.Interop.Excel._Worksheet)excelApp.ActiveSheet).PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape;
excelApp.ActiveWorkbook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF, outfile);
}
finally
{
if (excelApp != null)
{
excelApp.DisplayAlerts = false;
excelApp.SaveWorkspace();
excelApp.Quit();
}
}
}
也许可以将ExportAsFixedFormat
方法设置为仅在转换时考虑特定页面(工作表)?
如果没有,如何将工作表从一个文件复制到另一个文件?
谢谢!
答案 0 :(得分:0)
您只需将文件复制到新目的地,打开目的地,删除不需要的纸张并导出即可。这是我的想法的一个例子(测试)。
// infile is the excel file, outfile is the pdf to build, sheetToExport is the name of the sheet
public static void ExportExcel(string infile, string outfile, string sheetToExport)
{
Microsoft.Office.Interop.Excel.Application excelApp = new
Microsoft.Office.Interop.Excel.Application();
try
{
string tempFile = Path.ChangeExtension(outfile, "XLS");
File.Copy(infile, tempFile, true);
Microsoft.Office.Interop.Excel._Workbook excelWorkbook =
excelApp.Workbooks.Open(tempFile);
for(int x = excelApp.Sheets.Count; x > 0; x--)
{
_Worksheet sheet = (_Worksheet)excelApp.Sheets[x];
if(sheet != null && sheet.Name != sheetToExport)
sheet.Delete();
}
excelApp.ActiveWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, outfile);
}
finally
{
if (excelApp != null)
{
excelApp.DisplayAlerts = false;
excelApp.SaveWorkspace();
excelApp.Quit();
}
}
}
答案 1 :(得分:0)
您可以只从原始文件中打印所需的纸张。我启动了Macro Recorder,选择了几张,并保存为PDF。这是代码:
Sheets(Array("Sheet1", "Sheet2")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\doug\Documents\Book1.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
当我更改选定的工作表并再次运行时,它按预期工作。
奇怪的是,在实际的“另存为”对话框中,您可以转到“选项”并选中“选定的表格”。这不能作为ExportAsFixedFormat的参数使用,但它在对话框中自动选择,也可能在调用时也是默认值。