【发布时间】:2014-03-20 18:12:24
【问题描述】:
我想尝试将办公文件(Excel、Word、Powerpoint)转换为 PDF 文件的 Windows 表单应用程序。
我客户的 PC 不会安装 Visual Studio,Office 版本是 2007。
我的应用程序使用Microsoft.Office.Iterop.Excel.dll 转换为 PDF 格式。
在我的客户电脑上找不到这个dll文件,出现如下错误。
System.AugumentException: Value does not fall within the expected range.
at Microsoft.Office.Interop.Excel._Workbook.ExportAsFixedFromat(.......)
我该如何解决这个问题?
我的代码如下
public bool ExportWorkbookToPdf(string workbookPath, string outputPath)
{
// If either required string is null or empty, stop and bail out
if (string.IsNullOrEmpty(workbookPath) || string.IsNullOrEmpty(outputPath))
{
return false;
}
// Create COM Objects
Microsoft.Office.Interop.Excel.Application excelApplication;
Microsoft.Office.Interop.Excel.Workbook excelWorkbook;
// Create new instance of Excel
excelApplication = new Microsoft.Office.Interop.Excel.Application();
// Make the process invisible to the user
excelApplication.ScreenUpdating = false;
// Make the process silent
excelApplication.DisplayAlerts = false;
// Open the workbook that you wish to export to PDF
excelWorkbook = excelApplication.Workbooks.Open(workbookPath);
MessageBox.Show(workbookPath);
// If the workbook failed to open, stop, clean up, and bail out
if (excelWorkbook == null)
{
excelApplication.Quit();
excelApplication = null;
excelWorkbook = null;
MessageBox.Show("in null");
return false;
}
var exportSuccessful = true;
try
{
// Call Excel's native export function (valid in Office 2007 and Office 2010, AFAIK)
excelWorkbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, outputPath);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
// Mark the export as failed for the return value...
exportSuccessful = false;
// Do something with any exceptions here, if you wish...
// MessageBox.Show...
}
finally
{
// Close the workbook, quit the Excel, and clean up regardless of the results...
excelWorkbook.Close();
excelApplication.Quit();
excelApplication = null;
excelWorkbook = null;
}
// You can use the following method to automatically open the PDF after export if you wish
// Make sure that the file actually exists first...
if (System.IO.File.Exists(outputPath))
{
MessageBox.Show(outputPath);
System.Diagnostics.Process.Start(outputPath);
}
return exportSuccessful;
}
【问题讨论】:
-
Excel 安装在机器上吧?你能分享你得到这个错误的代码吗?
-
我在机器上安装了Office 2007。错误发生在“excelWorkbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, outputPath);”
-
outputPath 是包含路径,还是包含路径的文件名?
-
带路径的文件名。[例如,C:\\Test.pdf]
-
很抱歉发布了德语链接,但是:msdn.microsoft.com/de-de/library/office/… 说“如果未安装 PDF 插件,则会出现错误”。也许是这样?
标签: c# winforms ms-office office-interop