Mam problem z odczytem z pliku .xlsx (Excel). Próbowałem użyć:Jak odczytać z 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));
}
, ale jeśli się nie powiodło z powodu connectionString
. Więc zaktualizowała linię wsparcia .xlsx:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);
ale otrzymuję:
Dostawca „Microsoft.ACE.OLEDB.12.0” nie jest zarejestrowany na komputerze lokalnym.
(problemem jest to, że nie jestem w stanie zainstalować nowe oprogramowanie na moim komputerze zdalnego testowania, więc nie jestem w stanie go naprawić i trzeba znaleźć inne rozwiązanie.)
zrobić także musisz mieć pewność, że zaimportowane dane będą przechowywane w prosty sposób (jestem programistą dla początkujących), aby umożliwić mi iterację, tj. tworzenie obiektów z danymi wiersza.
Inne podejścia Sprawdziłem:
komentarz: wydaje się prawdopodobnie pracować dla mnie, ale nie obsługuje plików Excel nieznanych wymiarami (losową liczbę wierszy i kolumn).
komentarz: nie obsługuje ustawienia nazwy kolumn z innego rzędu niż pierwsza (w niektórych moich plików Excela, są komentarze w 4-6 pierwszych rzędach, a następnie jest wiersz nagłówków i dane poniżej).
Komentarz: sam problem jak wyżej.
komentarz: pobrane waga paczki był ponad 60MB i to wymaga ode mnie, aby zainstalować go w systemie, co nie jest możliwe w mojej sytuacji. W każdym razie, ludzie komentują, że jest on ograniczony do 150 wierszy.
Tymczasem postaram się sprawdzić https://code.google.com/p/linqtoexcel/, ale wszystkie inne pomysły są mile widziane!
EDIT: Właśnie sprawdziliśmy, że LinqToExcel, sam problem jak wyżej:
Dostawca 'Microsoft.ACE.OLEDB.12.0' nie jest zarejestrowany na komputerze lokalnym.
EDIT2: Ostatecznie, wydaje się, że rozwiązanie to rozwiązać mój problem:
https://stackoverflow.com/a/19065266/3146582
epplus https://epplus.codeplex.com/ – Fredou
@Fredou: nie tworzyć arkusze kalkulacyjne? Muszę przeczytać od jednego. Czy masz jakiś tego przykład? –
może również przeczytać plik excel, sprawdź to pytanie stackoverflow http://stackoverflow.com/questions/11685204/reading-excel-spreasheet-using-epplus lub ten wpis na blogu http://blog.fryhard.com/archive/2010 /10/28/reading-xlsx-files-using-c-and-epplus.aspx – Fredou