var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
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, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
Tego zwykle używam. Jest trochę inaczej, ponieważ zwykle edytuję tabele AsEnumerable ():
var data = ds.Tables["anyNameHere"].AsEnumerable();
ponieważ pozwala mi to używać LINQ do wyszukiwania i budowania struktur z pól.
var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
new MyContact
{
firstName= x.Field<string>("First Name"),
lastName = x.Field<string>("Last Name"),
phoneNumber =x.Field<string>("Phone Number"),
});
xlsx
, zamiast tego musisz użyć tego ciągu połączenia:string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName)
Jeśli są to tylko proste dane zawarte w pliku Excel, możesz je odczytać przez ADO.NET. Zobacz parametry połączenia wymienione tutaj:
http://www.connectionstrings.com/?carrier=excel2007 lub http://www.connectionstrings.com/?carrier=excel
-Ryan
Aktualizacja: możesz po prostu przeczytać arkusz roboczy za pomocą czegoś takiego
select * from [Sheet1$]
źródło
Podejście ADO.NET jest szybkie i łatwe, ale ma kilka dziwactw, o których powinieneś wiedzieć, szczególnie jeśli chodzi o sposób obsługi typów danych.
Ten doskonały artykuł pomoże Ci uniknąć niektórych typowych pułapek: http://blog.lab49.com/archives/196
źródło
Oto, czego użyłem w programie Excel 2003:
źródło
Co z programem Excel Data Reader?
http://exceldatareader.codeplex.com/
Użyłem w tym gniewu, w środowisku produkcyjnym, do pobierania dużych ilości danych z różnych plików Excel do SQL Server Compact. Działa bardzo dobrze i jest dość solidny.
źródło
<dimension>
element,<worksheet>
który sprawiał mi kłopoty.Oto kod, który napisałem w C # przy użyciu .NET 1.1 kilka lat temu. Nie jestem pewien, czy byłoby to dokładnie to, czego potrzebujesz (i może nie być moim najlepszym kodem :)).
źródło
Koogra to komponent typu open source napisany w języku C #, który czyta i zapisuje pliki Excel.
źródło
Chociaż specjalnie poprosiłeś o .xls, sugerując starsze formaty plików, dla formatów OpenXML (np. Xlsx), zdecydowanie polecam OpenXML SDK ( http://msdn.microsoft.com/en-us/library/bb448854.aspx )
źródło
Dużo czytałem z plików Excela w C # jakiś czas temu i zastosowaliśmy dwa podejścia:
To drugie podejście było wiele szybsze: czytanie dużego stołu z 20 kolumnami i 200 wierszami zajęłoby 30 sekund przez COM i pół sekundy przez ODBC. Dlatego zalecałbym podejście do bazy danych, jeśli potrzebujesz tylko danych.
Twoje zdrowie,
Carl
źródło
ExcelMapper to narzędzie typu open source ( http://code.google.com/p/excelmapper/ ), którego można używać do czytania arkuszy programu Excel jako obiektów o silnym typie. Obsługuje zarówno formaty XLS, jak i XLSX.
źródło
Chcę pokazać prostą metodę odczytu pliku xls / xlsx w .NET. Mam nadzieję, że poniższe informacje będą dla Ciebie pomocne.
Kod pochodzi z artykułu: http://www.c-sharpcorner.com/uploadfile/d2dcfc/read-excel-file-with-net/ . Możesz uzyskać z niego więcej szczegółów.
źródło
Nie za darmo, ale z najnowszym pakietem Office jest bardzo ładna automatyzacja .Net API. (interfejs API był przez długi czas, ale był nieprzyjemny COM) Możesz zrobić wszystko, co chcesz / potrzebujesz w kodzie, podczas gdy aplikacja Office pozostaje ukrytym procesem w tle.
źródło
Wybacz mi, jeśli jestem tu poza bazą, ale czy nie po to są Office PIA ?
źródło
Ostatnio, częściowo po to, aby poprawić się w LINQ .... Korzystam z API automatyzacji Excela, aby zapisać plik jako arkusz kalkulacyjny XML, a następnie przetworzyć ten plik za pomocą LINQ to XML.
źródło
SpreadsheetGear for .NET to kompatybilny z programem Excel składnik arkusza kalkulacyjnego dla platformy .NET. Po prawej stronie naszej strony produktu możesz zobaczyć, co mówią nasi klienci o wydajności . Możesz spróbować sam, korzystając z bezpłatnej, w pełni funkcjonalnej oceny .
źródło
SmartXLS to kolejny składnik arkusza kalkulacyjnego programu Excel, który obsługuje większość funkcji wykresów programu Excel, silników formuł i może odczytywać / zapisywać format openxml programu excel2007.
źródło
Składnik programu .NET Excel Reader .NET może spełniać Twoje wymagania. Jest wystarczająco dobry do odczytu plików XLSX i XLS. Wypróbuj to z:
źródło
Polecam bibliotekę FileHelpers, która jest darmową i łatwą w użyciu biblioteką .NET do importowania / eksportowania danych z EXCEL, ustalonych długości lub rozdzielonych rekordów w plikach, ciągach lub strumieniach i więcej.
Sekcja dokumentacji łącza danych Excel http://filehelpers.sourceforge.net/example_exceldatalink.html
źródło
Możesz spróbować użyć tego rozwiązania typu open source, które sprawia, że obsługa programu Excel jest o wiele czystsza.
http://excelwrapperdotnet.codeplex.com/
źródło
SpreadsheetGear jest niesamowity. Tak, to wydatek, ale w porównaniu z kręceniem się z innymi rozwiązaniami, jest wart kosztów. Jest szybki, niezawodny, bardzo wszechstronny i muszę powiedzieć, że po korzystaniu z tego produktu w pracy na pełnym etacie przez ponad półtora roku ich obsługa klienta jest fantastyczna!
źródło
Zastosowane przez nas rozwiązanie wymagało:
Istnieje kilka możliwości, ale okazało się, że NPoi (port .NET od dawna istniejącego projektu open source Poi w Javie ) jest najlepszy: http://npoi.codeplex.com/
Umożliwia także pracę z formatami plików doc i ppt
źródło
Jeśli to tylko dane tabelaryczne. Poleciłbym pomocników do plików Marcos Melli, które można pobrać tutaj .
źródło
Późno na imprezę, ale jestem fanem LinqToExcel
źródło
możesz napisać arkusz kalkulacyjny programu Excel, który ładuje dany arkusz kalkulacyjny programu Excel i zapisuje go jako plik csv (zamiast robić to ręcznie).
to możesz zautomatyzować to od c #.
a gdy już znajdzie się w csv, program c # może tego dokonać.
(jeśli ktoś poprosi cię o programowanie w programie Excel, najlepiej udawać, że nie wiesz jak)
(edytuj: ah tak, rob i Ryan mają rację)
źródło
Wiem, że ludzie robili w tym celu „rozszerzenie” programu Excel.
Mniej więcej tworzysz w Excelu przycisk z napisem „Eksportuj do programu X”, a następnie eksportuj i wysyłaj dane w formacie, który program może odczytać.
http://msdn.microsoft.com/en-us/library/ms186213.aspx powinien być dobrym miejscem do rozpoczęcia.
Powodzenia
źródło
Właśnie wykonałem szybki projekt demonstracyjny, który wymagał zarządzania niektórymi plikami Excel. Składnik .NET z oprogramowania GemBox był odpowiedni dla moich potrzeb. Ma darmową wersję z kilkoma ograniczeniami.
http://www.gemboxsoftware.com/GBSpreadsheet.htm
źródło
Pakiet Excel jest komponentem typu open source (GPL) do odczytu / zapisu plików Excel 2007. Użyłem go w małym projekcie, a interfejs API jest prosty. Działa tylko z XLSX (Excel 200 i), nie z XLS.
Kod źródłowy również wydaje się dobrze zorganizowany i łatwy w obsłudze (jeśli musisz rozszerzyć funkcjonalność lub naprawić drobne problemy, tak jak ja).
Najpierw wypróbowałem podejście ADO.Net (ciąg połączenia Excela), ale było obrzydliwe włamania - na przykład, jeśli drugi wiersz zawiera liczbę, zwróci wartości int dla wszystkich pól w kolumnie poniżej i po cichu upuści wszelkie dane to nie pasuje.
źródło
Używamy ClosedXML w dość dużych systemach.
źródło
Take.io
Arkusz kalkulacyjny wykona tę pracę za Ciebie i bez żadnych opłat. Spójrz na to .źródło
Właśnie użyłem ExcelLibrary do załadowania arkusza kalkulacyjnego .xls do zestawu danych. Działa świetnie dla mnie.
źródło