Автоматизация импорта в Excel
Я полностью остановился: мне нужно импортировать данные из Excel в базу данных Microsoft SQL Server 2008. Некоторые столбцы, начиная с определенных строк, содержат данные, которые мне нужно извлечь и правильно вставить в базу данных, а сам файл предоставляется в виде потока.
Я изучал решение Microsoft Excel 12.0 Object Library, но, похоже, оно зависит от того, установлен ли Office в производственной среде? Или можно развернуть приложение в среде, где Office не установлен?
Я также взглянул на Excel Data Reader, но, похоже, он не работает для документов xlsx или Office 2010, жалуясь на "плохую подпись файла".
Каковы ваши рекомендации?
4 ответа
Excel Data Reader должен быть в порядке. Вы использовали:
//2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
открыть файл xlsx?
Я использую Microsoft.Office.Interop.Excel для анализа файлов Excel. Обычно, да, на компьютере, на котором развернут компьютер, должен быть установлен Office, что поместит библиотеки Interop в глобальный кэш сборок. Я обхожу это путем копирования DLL в проект развертывания. Вы также можете попробовать встроить библиотеку взаимодействия в вашу сборку.
Вот пример использования взаимодействия: http://support.microsoft.com/kb/302084
Если вы просто читаете данные и вам известно, что вы от них хотите, я обычно просто использую OLEDB для чтения данных, а затем делаю с ними то, что мне нужно.
Быстрый пример с использованием DbDataReader для быстрого прохода по строкам, давая ConnectionString и SheetName
using System.Data.Common;
using System.Data.OleDb;
using (OleDbConnection connection = new OleDbConnection(ConnectionString))
{
connection.ConnectionString = ConnectionString;
connection.Open();
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT * FROM [" + SheetName + "]";
using (DbDataReader DR = command.ExecuteReader())
{
while (DR.Read())
{
// Read your data here.
}
}
}
}
Другой пример можно найти здесь.
У вас была возможность попробовать: http://spread.grapecity.com/spread-services/ или https://www.nuget.org/packages/Spread.Services/? Он предоставляет вам комплексный API-интерфейс для работы с электронными таблицами, совместимыми с Microsoft Excel, без установки MS Office на целевых компьютерах.