如何在未安装 office 的情况下从 winform vb.net 2008 导出到 excel?

Posted

技术标签:

【中文标题】如何在未安装 office 的情况下从 winform vb.net 2008 导出到 excel?【英文标题】:How to export to excel from a winform vb.net 2008 without office installed? 【发布时间】:2010-11-26 23:28:13 【问题描述】:

我正在使用 Visual Basic (Visual Studio 2008) 构建一个 Windows 窗体应用程序。

这个想法是查询一个 mysql 数据库并将结果导出到一个 excel 文档。

我设法使用这段代码做到了这一点(我将只显示导出到 excel 部分):

    Imports Excel = Microsoft.Office.Interop.Excel
Imports System.IO
Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Configuration
Imports System.Runtime.InteropServices

Private Sub btn_getReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_getReport.Click

    Dim wb As Excel.Workbook
    Dim ex As New Excel.Application
    wb = ex.Workbooks.Add(System.Reflection.Missing.Value)
    Dim sheet As Excel.Worksheet = CType(wb.Worksheets.Add, Excel.Worksheet)
    sheet.Name = "algo"

    Dim i As Integer = 1

    Try
        While reader.Read
            sheet.Cells(i, 1) = CStr(reader.Item(0))
            sheet.Cells(i, 2) = CStr(reader.Item(1))
            sheet.Cells(i, 3) = CStr(reader.Item(2))
            i += 1
        End While
    Catch MyEx As MySqlException
        RaiseEvent MySqlError(Err, MyEx, "read")
    Catch exc As Exception
        RaiseEvent MySqlError(Err, exc, "read")
    End Try


    Dim dialog As New SaveFileDialog
    Dim result As DialogResult = dialog.ShowDialog
    Try
        wb.SaveAs(dialog.FileName)
    Catch exerr As Exception
    End Try
    'Show the spreadsheet.
    'ex.Visible = True
    'wb.Activate()

End Sub

它在我的笔记本电脑(安装了 office 2003)上运行良好,但是当我创建安装包并将其安装在我要使用它的服务器上(没有安装 office)时,我得到了这个错误:

"正在检索 COM 类工厂 具有 CLSID 的组件 00024500-0000-0000-C000-000000000046 由于以下错误而失败: 80040154。”

对于我所阅读的内容,这是在计算机上不存在时尝试使用 excel 时出现的问题,我可以理解,真正让我感到困惑的是,我使用了将信息导出到 excel 的应用程序,甚至在计算机上运行没有安装办公室,他们怎么能这样做?

为了记录,我需要 excel 文件,而不是 CSV。

非常感谢。

【问题讨论】:

查看这个问题以获得一些想法:***.com/questions/1369361/…> 【参考方案1】:

您已经完全正确地诊断了问题。这就是好消息。坏消息是,如果机器上未安装 Excel DLL,您将无法使用 Excel 互操作。

您的选择:

    在计算机上安装 Excel 这将运行。 拉取 DLL(库)并部署 他们与您的应用程序。在 这样做,你可能违反了 与 Microsoft 的许可协议。 这样做需要您自担风险。 以 Office 2007 使用的 Open XML 格式手动创建 Excel 电子表格。

要执行选项三,请查看本文中 Excel 2007 的格式:http://msdn.microsoft.com/en-us/library/aa338205.aspx

简而言之,您会将数据读入数据集。然后将其导出为 XML 文件。将该文件连同任何支持信息一起填充到一个 zip 文件中,并将扩展名更改为 .xlsx。它比这要复杂一些,但并不多。

【讨论】:

感谢您的帮助。关于三个选项:1-由于许可问题,我无法在服务器上安装 Excel,2-同上,3-我必须使用 Excel 2003,第一个解决方案似乎更简单,至少对于我现在需要完成的事情.非常感谢您详细而清晰的回答。 酷!很高兴你能得到一些帮助。 :-)【参考方案2】:

如果您真的想避免导出到逗号或制表符分隔文件的简单方法,excel 可以完美处理...

...然后通过生成 xml/使用 xsl 导出为 Excel-XML 格式 (spreadsheetml)。您可以找到example here。应该在 Excel 2002+ 上工作。

【讨论】:

感谢您的帮助,但我发现上述解决方案更易于实施。非常感谢!【参考方案3】:

SpreadsheetGear for .NET 可以导出 Excel 文件,适用于包括 WinForms 在内的任何 .NET 解决方案,并且不需要安装 Excel。

您可以查看实时示例here 并下载免费试用版here。

免责声明:我拥有 SpreadsheetGear LLC

【讨论】:

以上是关于如何在未安装 office 的情况下从 winform vb.net 2008 导出到 excel?的主要内容,如果未能解决你的问题,请参考以下文章

在没有 libreoffice 的情况下从 word 创建 pdf

iOS 在未运行状态下从 BLE 获取数据

如何在不安装的情况下从 apt-get 下载软件包? [关闭]

如何在未安装 Git 的情况下应用“git diff”补丁?

如何在不使用 pip install 的情况下从 tar.gz 文件安装 Python 包

如何在不在客户端安装软件的情况下从远程计算机在我的家用计算机上执行 git 命令(拉、推)?