首先,我使用的是 SQL Server Express 2008 (R2),因此我能够将 MS Excel 文件导出到我的数据库中。我知道至少三种方法可以做到这一点:
1) Using Import and Export Data (whether 32 bit or 64 bit).
2) Using SQL per se
3) Programmatically like using C# or VB.net
在导入和导出数据中,只需转到所有程序下的 MS SQL Server,然后按照说明进行操作。您指定Data Source
asMS Excel
然后您确定您的Destination
身份并确保您Database
要放置它的身份。
在使用 SQL中,您可以简单地使用以下命令,只需根据自己的需要进行更改。
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\CityName\DALLAS_Cars_2011.xls','select * from [sheet1$]')
但是,如果您遇到以下问题:
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.
尝试添加以下行:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\CityName\DALLAS_Cars_2011.xls','select * from [sheet1$]')
否则,如果您仍然遇到问题,这可能意味着您MS Excel is 32 bit
和您正在运行64 bit SQL Server
. 所以,你最好做第一种方法。
最后,如果您知道VB.Net 或 C# 中的编程,那么您可能会像这样编写代码:
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
"Initial Catalog=<database>;User ID=<user>;Password=<password>"
'Import by using OPENDATASOURCE.
strSQL = "SELECT * INTO XLImport6 FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source=C:\test\xltest.xls;" & _
"Extended Properties=Excel 8.0')...[Customers$]"
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
在此处查看源代码
或者你也可以使用一个库,EPPlus
就像我在我的一个程序中所做的那样。
在此处查看其链接。