在不使用 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 的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 TeraWurfl 的情况下检测网站是不是正在通过移动设备或计算机使用 [重复]