在不使用 OleDB 的情况下通过 aspnet 将 excel 导入 sql 的方法

Posted

技术标签:

【中文标题】在不使用 OleDB 的情况下通过 aspnet 将 excel 导入 sql 的方法【英文标题】:Method to import excel to sql thru aspnet without using OleDB 【发布时间】:2015-04-09 16:54:58 【问题描述】:

您好,是否有任何用于 ASPNet(C# 或 VB)的 UI/控制器或任何无需使用 OPENROWSET(''Microsoft.Jet.OLEDB.4.0') 即可读取/转储 excel 到 sql 的方法? 非常感谢您的建议...谢谢...

【问题讨论】:

【参考方案1】:

不确定它是否会有所帮助。我将此连接字符串与我的 VB.net 表单应用程序一起使用。

 sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFileName & ";Extended Properties = ""Excel 12.0 Xml;HDR=NO"""
 sSQL = "Select * from [Sheet1$] WHERE F1 IS NOT NULL AND F1 <> ''"
Dim OLEConn As New OleDbConnection(sConnectionString)
Dim cmd = New OleDbCommand(sSQL, OLEConn)
Dim OLEAdapter As New OleDbDataAdapter(cmd)
OLEAdapter.Fill(dt)

然后我使用 SQL Bulk copy 将 DT 写入 SQL 表

bulkCopy.ColumnMappings.Add(0, 0)
bulkCopy.DestinationTableName = "SomeTable"
bulkCopy.WriteToServer(dt)

如果您不使用 OLEDB,我假设您需要使用 excel 应用程序对象并创建一个函数来迭代每个列和行以获取数据。 http://vb.net-informations.com/excel-2007/vb.net_excel_2007_open_file.htm

Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("c:\test1.xlsx")
xlWorkSheet = xlWorkBook.Worksheets("sheet1")
'display the cells value B2
MsgBox(xlWorkSheet.Cells(2, 2).value)
'edit the cell with new value
xlWorkSheet.Cells(2, 2) = "http://vb.net-informations.com"
xlWorkBook.Close()
xlApp.Quit()

【讨论】:

@BobNoobGuy- 谢谢,但这是使用 Microsoft.ACE.OLEDB.12。我们不允许安装此 Office 互操作 DLL... 我认为即使打开 excel 文件,您也需要 excel 12.0 对象库 (Microsoft.Office.Interop.Excel.dll) msdn.microsoft.com/en-us/library/vstudio/…。我能想到的唯一选择是如果您使用“xlsx”而不是“xls”.. xlsx 基本上是一个 zip 文件,您可以在其中提取 SHEET1.xml 并获取 XML 。但这会很混乱。

以上是关于在不使用 OleDB 的情况下通过 aspnet 将 excel 导入 sql 的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在不访问请求的情况下获取基本 URL

如何在不使用 TeraWurfl 的情况下检测网站是不是正在通过移动设备或计算机使用 [重复]

是否可以在不使用 Web 浏览器的情况下通过 websockets 交谈?

如何在不通过信号的情况下进行申请?

如何在不显示中间视图的情况下通过多个视图展开

如何在不使用唯一修饰符的情况下通过灵活的搜索更新项目类型的所有实例?