自动将多个Excel工作表导入SQL

问题描述 投票:2回答:1

我需要允许用户选择一个Excel文件,然后将所有工作表上传到SQL表。我不确定该怎么做。每张纸的格式完全相同。并且工作表格式与SQL表格式匹配。

sql-server vba vb6 excel-vba dts
1个回答
2
投票

您可以将ODBC Provider用于Excel文件。这是一些用JavaScript编写的代码,用于将Excel文件导入SQL Server表。每个工作表都被视为一个表。数据类型存在一些麻烦,因为ODBC驱动程序通过读取第一个值来推导每一列的数据类型,因此,如果一列在数据的第一行中具有数字,则整个列将被读取为数字,而每个“非数字”将被读取。值将被读取为NULL。

var objCat = new ActiveXObject("ADODB.Connection"); 
var objRSExcel = Server.CreateObject("ADODB.Recordset");
objRSExcel.CursorLocation = 3;
var file =  "imported_file.xls";
var TableName = "[Sheet1$]"

// Database Creation
objCat.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties=Excel 8.0;";                    
objCat.Open();
objRSExcel.Open("SELECT * FROM " + TableName, objCat);

var rsInsert = Server.CreateObject("ADODB.Recordset");
rsInsert.Open("SELECT * FROM [TARGET_TABLE]", cn, 1, 3);

while (!objRSExcel.EOF) {
    rsInsert.AddNew();
    for (var j=0;j<objRSExcel.Fields.Count; j++) {
        rsInsert.Fields(j).Value = objRSExcel.Fields(j).Value;
    }
    rsInsert.Update();
    objRSExcel.MoveNext();
}
objRSExcel.Close();
rsInsert.Close();
© www.soinside.com 2019 - 2024. All rights reserved.