У меня проблема с чтением из файла .xlsx(Excel). Я попытался использовать:
var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "XLSData");
DataTable data = ds.Tables["XLSData"];
// ... Loop over all rows.
StringBuilder sb = new StringBuilder();
foreach (DataRow row in data.Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}
но если не удалось выполнить connectionString
. Поэтому я обновил строку для поддержки .xlsx:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);
но я получаю:
Поставщик 'Microsoft.ACE.OLEDB.12.0' не зарегистрирован на локальном компьютере.
(Проблема заключается в том, что я не могу установить новое программное обеспечение на своем удаленном тестовом компьютере, поэтому я не могу его исправить и нужно найти другое решение.)
Я также должен быть уверен, что импортированные данные будут храниться каким-то простым способом (я начинаю программист), чтобы позволить мне перебирать его, т.е. создавать объекты со строковыми данными.
Другие подходы, которые я проверил:
комментарий: кажется, работает для меня, но не поддерживает файлы Excel неизвестных размеров (случайное число строк и столбцов).
comment: не поддерживает имена столбцов настроек из разных строк, чем первый (в некоторых моих файлах Excel есть комментарии в 4-6 первых строках, а затем строка заголовков и данных ниже).
комментарий: та же проблема, что и выше.
комментарий: загруженный вес пакета был более 60 МБ, и мне требуется установить его в систему, что невозможно в моей ситуации. В любом случае, люди отмечают, что он ограничен 150 строками.
Тем временем я попытаюсь проверить https://code.google.com/p/linqtoexcel/, но все другие идеи более чем приветствуются!
EDIT: просто проверил LinqToExcel, такую же проблему, как указано выше:
Поставщик 'Microsoft.ACE.OLEDB.12.0' не зарегистрирован на локальном компьютере.
EDIT2: В конечном итоге кажется, что это решение решило мою проблему: