2009-09-07 3 views
2

В VB6:Автоматизировать Импорт нескольких Excel рабочих таблиц в SQL

мне нужно, чтобы позволить пользователю выбрать файл Excel, а затем загрузить все листы в таблицу SQL. Я не уверен, как это сделать. Формат каждого листа точно такой же. Формат рабочего листа соответствует формату таблицы SQL.

Я действительно стучу головой о стену здесь. Если бы кто-нибудь мог предложить предложение, пример кода и т. Д., Я бы ДЕЙСТВИТЕЛЬНО оценил это.

Спасибо, ребята.

+0

Можете ли вы использовать SSIS? –

+0

Нет, это недоступно. DTS или какой-либо другой метод. – 2009-09-07 02:27:20

+0

Нет ответов на рабочий день? :-) – 2009-09-07 22:13:20

ответ

2

Вы можете использовать поставщик ODBC для файлов 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(); 
+0

«Есть некоторые проблемы с типами данных, потому что драйвер ODBC вычитает тип данных каждого столбца, читая его первые значения, поэтому, если столбец имеет номера в первых строках данных, весь столбец будет считан как числовой и каждое «не числовое» значение будет считаться NULL ». LOL, это не кажется хорошим! – 2009-09-07 02:55:17

+0

Да, знаете, библиотеки MS далеки от совершенства. – Rodrigo

+0

Вот дополнительная информация http://support.microsoft.com/kb/189897 – Rodrigo

Смежные вопросы