winforms 如何在没有安装office的情况下从winform www.example.com 2008导出到excelvb.net?

qcuzuvrc  于 2022-11-17  发布在  .NET
关注(0)|答案(3)|浏览(211)

我正在使用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)上时,我收到以下错误:
“由于以下错误,检索CLSID为{00024500-0000-0000-C 000 - 00000000046}的组件的COM类工厂失败:80040154。”
对于我所读到的,这是一个问题,而试图使用Excel时,它不存在于电脑上,我可以理解,真正让我困惑的是,我使用的应用程序,导出信息到Excel,即使在电脑上运行,而没有安装Office,他们怎么能做到这一点?
为了记录在案,我需要Excel文件,而不是CSV文件。
谢谢你,谢谢你

dced5bon

dced5bon1#

您完全正确地诊断出了问题。这是好消息。坏消息是,如果计算机上没有安装Excel DLL,则无法使用Excel Interop。
您的选择:
1.在要运行此程序的计算机上安装Excel。
1.提取DLL(库)并将其与应用程序一起部署。这样做可能违反与Microsoft的许可协议。您需要自行承担风险。
1.以Office 2007使用的Open XML格式手动创建Excel电子表格。
要执行选项三,请查看本文中的Excel 2007格式:http://msdn.microsoft.com/en-us/library/aa338205.aspx
简单地说,你要把数据读入一个数据集,然后导出到一个XML文件,把这个文件和所有支持信息沿着压缩到一个zip文件中,把扩展名改为. xlsx。这比这复杂一点,但也不多。

weylhg0b

weylhg0b2#

如果你真的想avaid简单的方法导出到逗号或制表符分隔的文件,excel可以完美地处理。
...然后通过生成xml/使用xsl导出为Excel-XML格式(spreadsheetml)。您可以找到example here。应在Excel 2002+中使用。

n9vozmp4

n9vozmp43#

SpreadsheetGear for .NET可以导出Excel文件,与任何.NET解决方案(包括WinForms)配合使用,并且不需要安装Excel。
您可以查看here的实时示例并下载免费试用版here
免责声明:我拥有SpreadsheetGear LLC

相关问题