如何将excel文件导入访问数据库?
我想将一张excel文件导入到访问数据库中
Private Sub Commande9_Click() Dim filepath As String filepath = "C:\Users\TXZG6067\Desktop\com.xlsx" DoCmd.TransferSpreadsheet acImport, , "ImportFromExcel", filepath, True End Sub
请帮我,谢谢。
指定工作表名称:
DoCmd.TransferSpreadsheet acImport, , "ImportFromExcel", filepath, True, "WorksheetName$"
要么:
DoCmd.TransferSpreadsheet acImport, , "ImportFromExcel", filepath, True, "WorksheetName!"
要将Excel文件或其中一个工作表导入数据库,必须执行以下步骤:
1)将该工作表/文件转换为逗号分隔符。 使用Save as
选项进行转换。
2)使用StreamReader
类读取此文件。 validation列长度和每列包含的数据。
3)使用StringBuilder
类创build一个查询(推荐),但你也可以使用一个string
。 如:
StringBuilder Sb = new StringBuilder("Insert Into table_name Values("); foreach(row in dt.rows) { sb = null; int j = 1; for(int i=0; i<columns_Count-1 ; i++) //Column count minus one to handle last column data { Sb.Append("'"+row[0][i]+"',"); j++; } if(j == columns_Count) //last column appends data without comma { Sb.Append("'"+row[0][columns_Count]+"'"); } Sb.Append(")"); //execute insert query here }
您可以在Excel VBA(ADO)中尝试此操作,假定您的数据在列A到C等等。
Dim dbpath as String, _ x as long, _ rs As ADODB.Recordset, _ cn As ADODB.Connection Set cn = New ADODB.Connection Set rs = New ADODB.Recordset dbPath = /your db path cn.Open "Provider=Microsoft.ace.OLEDB.12.0;Data Source=" & dbPath rs.Open "Consolidated", cn, adOpenKeyset, adLockOptimistic, adCmdTable For x = 2 To LastRow rs.AddNew rs.Fields("Fieldnm1") = Range("A" & x).value rs.Fields("Fieldnm2") = Range("B" & x).value rs.Fields("Fieldnm3") = Range("C" & x).value rs.Update Next x rs.Close Set cn = Nothing Set rs = Nothing
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9 , _ "TableOrQuery","YourExcelPath", _ True, "TheNameofTheSheetYouWant"
语法: expression .TransferSpreadsheet(TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA)
例:
DoCmd.TransferSpreadsheet acImport, 3, _ "Employees","C:\Lotus\Newemps.wk3", True, "A1:G12"
你必须给它SpreadsheetType,关于SpreadsheetType
细节见下面的链接:
https://msdn.microsoft.com/en-us/library/office/ff196017.aspx