我正在使用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文件。
谢谢你,谢谢你
3条答案
按热度按时间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。这比这复杂一点,但也不多。
weylhg0b2#
如果你真的想avaid简单的方法导出到逗号或制表符分隔的文件,excel可以完美地处理。
...然后通过生成xml/使用xsl导出为Excel-XML格式(spreadsheetml)。您可以找到example here。应在Excel 2002+中使用。
n9vozmp43#
SpreadsheetGear for .NET可以导出Excel文件,与任何.NET解决方案(包括WinForms)配合使用,并且不需要安装Excel。
您可以查看here的实时示例并下载免费试用版here。
免责声明:我拥有SpreadsheetGear LLC