【问题标题】:Using Microsoft.Office.Interop.Excel without actually having Excel?在没有 Excel 的情况下使用 Microsoft.Office.Interop.Excel?
【发布时间】:2011-08-16 06:57:15
【问题描述】:

我在 VB.Net 中使用Microsoft.Office.Interop.Excel 以便将 .xls 文件导出为 .pdf 文件。这是我能找到的唯一方法,无需依赖在运行的机器上安装第三方软件或使用昂贵的 Visual Studio 插件。此方法需要通过代码打开excel并保存文件。

我的问题是我只有 Microsoft Office 的试用版,因为我从未真正使用过它。好吧,我可以打开它的时间限制已经结束,因为我已经运行了足够多的程序来进行调试,现在我不能继续开发这个应用程序了。是否有适用于 Visual Studio 的开发工具包提供我需要的 API 来实现此功能,而无需实际安装 Office?我不需要 Microsoft Office,所以我不想为了开发和测试应用程序而购买完整版。

我查看了一些选项,例如 this,但有一些非常具体的格式需要在 .xls 中保持完整才能转换为 .pdf,如果我使用中间格式,这似乎不起作用。

我还阅读了一些关于 openOffice API 的信息,但它与 .Net 兼容吗?如果是这样,有人可以向我指出一个解释如何将 API 与 .Net 一起使用的教程吗?如果可能,特别是 VB,但我可以使用 C# 代码。

这是我正在尝试做的一个示例,以防它对建议有所帮助:

        Dim fileName As String = AppDomain.CurrentDomain.BaseDirectory & "LOA " & compName.Text & ".xls"
        Dim xlsApp = New Microsoft.Office.Interop.Excel.Application
        xlsApp.ScreenUpdating = False
        Dim xlsBook As Microsoft.Office.Interop.Excel.Workbook
        Dim paramExportFormat As XlFixedFormatType = XlFixedFormatType.xlTypePDF
        Dim paramExportQuality As XlFixedFormatQuality = XlFixedFormatQuality.xlQualityStandard
        Dim paramOpenAfterPublish As Boolean = False
        Dim paramIncludeDocProps As Boolean = True
        Dim paramIgnorePrintAreas As Boolean = True
        Dim paramFromPage As Object = Type.Missing
        Dim paramToPage As Object = Type.Missing
        xlsBook = xlsApp.Workbooks.Open(fileName, UpdateLinks:=False, ReadOnly:=False)
        xlsBook.ExportAsFixedFormat(paramExportFormat, AppDomain.CurrentDomain.BaseDirectory & "LOA " & compName.Text & ".pdf", paramExportQuality, paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage, paramToPage, paramOpenAfterPublish)
        xlsBook.Close(SaveChanges:=False)
        xlsApp.Quit()

【问题讨论】:

    标签: vb.net excel pdf


    【解决方案1】:

    您所说的问题意味着误解 - Microsoft.Office.Interop.Excel 程序集不包含处理代码。它本质上是一个元数据程序集,它告诉 .NET 如何与 Excel 对话。在没有安装 Excel 的情况下尝试进行任何处理是没有用的。

    有相当多的免费库可以创建和操作 Excel 文件 - 您指向的 Stackoverflow 问题有一些,其他的在 CodePlex 上。如果您需要对具有特殊格式要求的工作表进行计算或呈现,您可能最好调查获得 Excel 许可证或迁移到不同架构的最低价格选项。

    【讨论】:

    • 我知道它只是指向excel。我知道还有其他库以不同的方式自动化流程或根本不需要 excel,但迄今为止建议的那些需要花钱或需要不同的格式。我需要使用 .NET,我只需要使用 .xls 和 .pdf 格式。我需要不需要 excel 的东西,或者可以代替 excel 的东西,它不需要花钱或需要在客户端机器上安装,并且没有中间格式更改。这篇文章没有提供这样的解决方案(像 SpreadsheetGear 或 Aspose 但免费的将是理想的)。
    • 这个看起来也很适合你的需要(虽然不是免费的):sautinsoft.com/convert-excel-xls-to-pdf/….
    • 我看过那个,是的,就功能而言,这是我所需要的,但我无法获得花钱的软件的授权。我一直在寻找免费选项。
    【解决方案2】:

    您可以安装 Microsoft Primary Interop Assemblies Package。你可以找到它here

    但要小心。不同的office版本有不同的包。

    【讨论】:

    • 他要求一个不需要安装 Excel 的包。当您下载 PIA 并运行安装程序时,您首先会收到一条消息,提示您需要先安装 Office。
    • PIA 正是这样做的。当您安装 PIA 时,即使您没有安装 Office,您也可以做一些事情。在过去的 3 年里,我一直在为我的项目使用这个解决方案。
    • @MarkSmith 完全正确。我在我们没有安装 Office 的测试服务器上试过这个,它告诉我同样的事情;你需要 Office。
    【解决方案3】:

    试试Codeplex。它可能会帮助你。

    NPOI 可以:

    1. 无需在您的服务器上安装 Microsoft Office 套件即可生成 Excel 报告,并且比在后台调用 Microsoft Excel ActiveX 更高效;
    2. 从 Office 文档中提取文本以帮助您实现全文索引功能(大部分时间此功能用于创建搜索引擎)。
    3. 从 Office 文档中提取图像
    4. 生成包含公式的 Excel 工作表

    【讨论】:

      【解决方案4】:

      试试这个线程的提示:https://stackoverflow.com/questions/769246/xls-to-pdf-conversion-inside-net -- Aspose 或打开办公室

      【讨论】:

      • 我已经排除了需要在客户端机器 (openoffice) 上进行其他安装或价格昂贵 (aspose) 的选项。这在我的问题的第一段中已明确说明。
      猜你喜欢
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多