Хорошо! Я глубоко взглянул на эту проблему! Заключительное слово - вы не можете удалить эти таблицы. Если вы удалите эти таблицы, идентичность не будет работать, как ожидалось. Для более подробной информации:
Проверьте превосходную библиотеку FileHelpers - там статья о CodeProject об этом, и это размещается здесь.
Это - чистый C#, и это может импортировать примерно любой плоский файл, CSV, и это имеет дело с Excel, также. Импорт полностью настраивается - можно определить вещи как разделители, строки и/или столбцы для пропуска, и так далее - много опций.
Я успешно использовал его в различных проектах, и это просто работает безупречно - настоятельно рекомендованный.
Можно легко создать IDataReader по Excel или файлу CSV (см. http://support.microsoft.com/kb/316934).
Вы используете SQL Server в качестве своего механизма базы данных? Если так, можно использовать класс SqlBulkCopy (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx), чтобы эффективно взять IDataReader, столбцы карты как соответствующий, и сохранить результаты в базе данных.
Я подозреваю, там может существовать некоторые устойчивые и гибкие инструменты для помощи Вам с этим очень потенциально сложным приложением, на которое, надо надеяться, кто-то укажет на Вас.
Тем временем вот функция, которую я нашел полезными для убежища файл Excel к DataTable. Эта версия только ищет первый рабочий лист. Это могло бы служить начальной точкой. К к чему-то похожему с файлами CSV должен только потребовать изменения строки подключения.
public static DataTable GetDataTableFromExcel(string SourceFilePath)
{
string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + SourceFilePath + ";" +
"Extended Properties=Excel 8.0;";
using (OleDbConnection cn = new OleDbConnection(ConnectionString))
{
cn.Open();
DataTable dbSchema = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dbSchema == null || dbSchema.Rows.Count < 1)
{
throw new Exception("Error: Could not determine the name of the first worksheet.");
}
string WorkSheetName = dbSchema.Rows[0]["TABLE_NAME"].ToString();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + WorkSheetName + "]", cn);
DataTable dt = new DataTable(WorkSheetName);
da.Fill(dt);
return dt;
}
}
FileHelpers является Вашим другом. Я использовал его счастливо для нескольких проектов, и это сохранило меня много горя и труда