【问题标题】:Microsoft.Office.Interop.Excel for Office 2007适用于 Office 2007 的 Microsoft.Office.Interop.Excel
【发布时间】: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


【解决方案1】:

正如cmets中已经说过的,每个客户端都需要安装2007 Microsoft Office Add-in: Microsoft Save as PDF。无论您使用的是 Windows 8.1 还是安装了任何 PDF 阅读器都没有关系。您需要该插件才能使用 Office 2007 编写 PDF。(Office 2010 或 2013 不需要任何插件。)

【讨论】:

  • 我明白了。非常感谢。
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
相关资源
最近更新 更多