VB.NET输出到Excel的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.NET输出到Excel的问题相关的知识,希望对你有一定的参考价值。
执行时出错,异常详细信息: System.InvalidCastException: 接口 Excel._Application 的 QueryInterface 失败。
参考技术A 一、DCOM修复1.运行:mmc comexp.msc /32,找到我的电脑 -> DCom配置中的Microsoft Excel Application
2.在Microsoft Excel Application上点击右键,选择"属性"
3.点击"标识"标签,选择"交互式用户"
4.点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
5.依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.
二、如果找不到Microsoft Excel 应用程序
1、进行OFFICE菜单中的组件重注册
2、如果仍未解决问题,点 开始--运行--输入EXCEL文件所在的路径 “c:\program files\exel.exe” /regserver 进行修复注册
参考:http://blog.csdn.net/liuyunfan/article/details/17733451
如何在未安装 office 的情况下从 winform vb.net 2008 导出到 excel?
【中文标题】如何在未安装 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
【讨论】:
以上是关于VB.NET输出到Excel的问题的主要内容,如果未能解决你的问题,请参考以下文章