Здравствуйте, Снигирев, Вы писали:
С>Мне нужно написать программу, что бы пользователи могли сами в таблицу (которая записана в SQL) импортировать данные из Ecxel.
Понятно. Я делал подобную утилиту на C#.
В самом простом случае этот процесс состоит из след. шагов:
1) Считать данные из Excel файла
2) Обработать их (если нужно)
3) Сформировать INSERT-ы для добавления данных в БД
Считать данные из Excel можно примерно так:
OleDbConnection oConnection = new OleDbConnection(m_sExcelConnectinString);
oConnection.Open();
try
{
string sSQL = "SELECT * FROM [{0}$]";
sSQL = string.Format(sSQL, p_sSheetName);
OleDbCommand oCommand = new OleDbCommand(sSQL);
oCommand.Connection = oConnection;
OleDbDataAdapter da = new OleDbDataAdapter(oCommand);
DataTable dt = new DataTable();
da.Fill(dt);
dt.TableName = p_sEntityName;
return dt;
}
finally
{
oConnection.Close();
}
Насчёт обработки хочу сказать что там нужно сделать проверку данных на возможность вставки в БД. Если какую либо запись вставить не возможно то её нужно запомнить и по оканчанию импорта на основании списка из таких записей сформировать новый Excel-ий файл с описанием проблемы для каждой записи (т.е. почему она не может быть проимпортирована)
INSERT-ы формируешь так как тебе надо.
P.S.
При использовании такого подхода который описан выше возникает одна небольшая проблема — скорось импорта данных не слишком высокая. С этим можно жить если импорт происходит не часто. Однако если скорость всё же важна, то увеличить её можно используя DTS (о котором я упоминал) тогда тебе прийдётся формировать схему импорта в программе, а не в самом Enterprise Manager.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"