如何从一个winform vb.net 2008出口到excel没有安装办公室?

我正在使用visual basic(visual studio 2008)构build一个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)上正常工作,但是当我创build安装程序包并将其安装在要使用它的服务器上时(我没有安装Office),出现此错误:

“检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80040154”

对于我所读到的,这是一个问题,而试图使用excel时,它不存在于计算机上,我可以理解,真正让我困惑的是,我已经使用的应用程序,出口信息擅长即使在没有办公室电脑上运行安装在他们身上,他们怎么能这样做?

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

非常感谢。

你已经完全诊断出这个问题了。 这是个好消息。 坏消息是,如果没有在计算机上安装Excel DLL,则无法使用Excel Interop。

您的select:

  1. 在将要运行的机器上安装Excel。
  2. 拉动DLL(库),并将其与您的应用程序部署。 这样做可能违反了与微软的许可协议。 这样做自担风险。
  3. 手动以Office 2007使用的Open XML格式创buildExcel电子表格。

要做三选项,请看这篇文章中Excel 2007的格式: http : //msdn.microsoft.com/en-us/library/aa338205.aspx

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

如果你真的想要简单的方式出口到一个逗号或tabdelimited文件,Excel可以完美地处理…

…然后通过生成xml /使用xsl导出到Excel-XML格式(spreadsheetml)。 你可以在这里find一个例子 。 应该从Excel 2002+工作。

SpreadsheetGear for .NET可以导出Excel文件,可以与包括WinForms在内的任何.NET解决scheme一起使用,不需要安装Excel。

你可以在这里看到活的样品,并在这里下载免费试用。

免责声明:我自己的SpreadsheetGear LLC