Import i eksport Excela-Jaka jest najlepsza biblioteka? [zamknięte]

W jednym z naszych ASP.NET aplikacje w C#, bierzemy pewien zbiór danych (SubSonic collection) i eksportujemy go do Excela. Chcemy również importować pliki Excel w określonym formacie. Szukam biblioteki, którą mógłbym wykorzystać do tego celu.

Wymagania:

  • pliki Excel 2007 (czy Excel 2003 obsługuje ponad 64K wierszy? Potrzebuję czegoś więcej.)
  • nie wymaga Excela na serwerze
  • pobiera typowaną kolekcję i, jeśli może, próbuje umieścić pola liczbowe jako numeryczny w Excelu.
  • działa dobrze z dużymi plikami (100k do 10m) - wystarczająco szybko.
  • nie zawiesza się podczas eksportowania GUID!
  • nie kosztuje crapload pieniędzy(Żadna biblioteka korporacyjna jak aspose). Darmowa jest zawsze świetna, ale może być biblioteką komercyjną.

Jaką bibliotekę polecacie? Czy używałeś go do dużych ilości danych? Czy są inne rozwiązania?

W tej chwili używam prostego narzędzia, które generuje HTML, który jest ładowany przez Excela później, ale tracę pewne możliwości, a Excel narzeka, gdy go ładujemy. Nie muszę generować Wykresów ani nic podobnego, po prostu eksportuję surowe dane.

Myślę o płaskich plikach CSV, ale Excel jest wymaganiem klienta. Mogę pracować bezpośrednio z CSV, gdybym miał narzędzie do konwersji do i z Excela. Biorąc pod uwagę, że Excel 2007 jest formatem pliku opartym na xml( i spakowanym), zgaduję, że tego rodzaju biblioteka powinna być łatwa do znalezienia. Jednak najważniejsze są dla mnie Wasze komentarze i opinie.


EDIT: jak na ironię, moim zdaniem i po odpowiedzi z największą liczbą głosów, najlepsza Biblioteka importu i eksportu Excela to w ogóle brak eksportu. Nie dotyczy to wszystkich scenariuszy, ale dotyczy moich. Pliki XLS obsługują tylko 64K wierszy. XLSX obsługuje do 1M. wolne biblioteki, które próbowałem, mają złą wydajność(jedna sekunda, aby załadować jeden wiersz, gdy masz 200k wierszy). Nie próbowałem tych płatnych, ponieważ czuję, że są one zawyżone za wartość, którą dostarczają, gdy wszystko, czego potrzebujesz, to szybka procedura konwersji XLSX CSV.

Author: Alexis Pigeon, 2009-01-14

20 answers

Dorzucę rękę do płaskich plików csv, choćby dlatego, że masz największą kontrolę nad kodem. Po prostu upewnij się, że czytasz wiersze i przetwarzasz je pojedynczo (czytanie dokumentu do końca i dzielenie pochłonie całą twoją pamięć - tak samo z pisaniem, przesyłaniem strumieniowym).

Tak, użytkownik będzie musiał zapisać-jako CSV w Excelu, zanim będzie mógł go przetworzyć, ale być może ograniczenie to można przezwyciężyć poprzez szkolenie i dostarczenie jasnych instrukcji na temat page?

Wreszcie, gdy eksportujesz do klienta, Jeśli ustawisz typ mime na text/csv, Excel jest zwykle mapowany do tego typu, więc użytkownik wydaje się być "plikiem Excel".

 38
Author: Travis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-14 23:34:23

Odkryłem Open XML SDK od mojej pierwotnej odpowiedzi. Zapewnia między innymi silnie typowane klasy dla obiektów arkusza kalkulacyjnego i wydaje się być dość łatwy w obsłudze. Użyję go do raportów w jednym z moich projektów. Niestety, Wersja 2.0 ma zostać wydana dopiero pod koniec 2009 lub 2010 roku.

 39
Author: cdonner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-11 04:16:56

Nowa wersja ExcelPackage jest tutaj http://EPPlus.codeplex.com

Nadal walczę z funkcją Eksportuj do Excela, ponieważ moja aplikacja powinna eksportować niektóre dane do Excela-szablon 2007

Ten projekt wydaje mi się w porządku, a deweloper bardzo reaguje na błędy i problemy.

 34
Author: Mohannad Otaibi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-21 21:38:20

Używałem ClosedXML i działa świetnie!

ClosedXML ułatwia programistom tworzenie Excela 2007/2010 pliki. Zapewnia przyjemny obiektowy sposób manipulowania plikami (podobnie jak VBA) bez radzenia sobie z kłopotami związanymi z dokumentami XML. Informatyka może być używany przez dowolny język. NET, taki jak C# i Visual Basic (VB).

 17
Author: Druid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-07 13:31:45

SpreadsheetGear dla. Net czyta i zapisuje CSV / XLS / XLSX i robi więcej.

You can see live ASP.NET próbki z kodem źródłowym C# i VB tutaj i pobierz bezpłatną wersję próbną tutaj.

Oczywiście uważam, że SpreadsheetGear jest najlepszą biblioteką do importowania / eksportowania skoroszytów Excela w ASP.NET - ale jestem stronniczy. Możesz zobaczyć, co niektórzy z naszych klientów mówią po prawej stronie tej strony .

Zastrzeżenie: posiadam SpreadsheetGear LLC

 14
Author: Joe Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-29 18:26:39
 12
Author: stormwild,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-24 08:35:23

Używałem Flexcel w przeszłości i było świetnie. Ale to było bardziej do programowego tworzenia i aktualizowania arkuszy excel.

 5
Author: Duncan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-14 20:33:33

Eksport CSV jest prosty, łatwy do wdrożenia i szybki. Jest jednak jedna potencjalna kwestia, na którą warto zwrócić uwagę. Excel (do 2007 roku) nie zachowuje wiodących zer w plikach CSV. Spowoduje to garbowanie kodów pocztowych, identyfikatorów produktów i innych danych tekstowych zawierających wartości liczbowe. Jest jedna sztuczka, która sprawi, że Excel poprawnie zaimportuje wartości (używając ograniczników i wartości przedrostków ze znakiem=, jeśli dobrze pamiętam, np..,="02052",...). Jeśli masz użytkowników, którzy będą wykonywać zadania post-processingu z CSV, muszą mieć świadomość, że muszą zmienić format na XLS, a nie zapisać plik z powrotem do CSV. Jeśli tak się stanie, czołowe zera zostaną utracone na dobre.

 5
Author: cdonner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-31 04:26:42

Od lat używam JExcel do tego, doskonałego projektu Java o otwartym kodzie źródłowym. Był to również. NET-able dzięki użyciu J# do kompilacji, a ja również odniosłem wielki sukces z nim w tym wcieleniu. Jednak ostatnio musiałem przenieść kod do natywnego. NET, aby obsługiwać 64-bitową aplikację IIS, w której tworzę wyjście Excela. 32-bitowa wersja J# nie ładuje się.

Kod dla CSharpJExcel to LGPL i jest obecnie dostępny na tej stronie , podczas gdy przygotowujemy się do wdrożyć go na stronie JExcel SourceForge. Będzie kompilowany z VS2005 lub VS2008. Przykłady w oryginalnej dokumentacji JExcel zostaną przeniesione w Nienaruszonym Stanie do wersji. NET.

Mam nadzieję, że jest to pomocne dla kogoś tutaj.

 4
Author: Chris Laforet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-27 12:31:49

Pracowałem z excel jetcell przez długi czas i naprawdę mogę go polecić. http://www.devtriogroup.com/exceljetcell

  • produkt handlowy
  • pliki Excel XLS & XLSX
  • oparty na własnym silniku w czystej sieci.
 3
Author: Robert Tyson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 07:20:13

Poniższa strona pokazuje jak wyeksportować DataTable, DataSet lub List do "właściwego" Excela 2007 .plik xlsx (zamiast eksportować a .plik csv, i uzyskanie Excela, aby go otworzyć).

Używa bibliotek OpenXML, więc nie musisz mieć zainstalowanego Excela na swoim serwerze.

Mikes Baza Wiedzy-ExportToExcel

Cały kod źródłowy jest podany, bezpłatnie , a także jako aplikacja demonstracyjna.

Bardzo łatwo jest dodać do własne aplikacje, wystarczy wywołać jedną funkcję, podając nazwę pliku Excel i źródło danych:

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);
Mam nadzieję, że to pomoże.
 3
Author: Mike Gledhill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-01 12:25:15

Sprawdź projekt ExcelPackage , wykorzystuje format pliku Office Open XML Excel 2007, jest lekki i open source...

 2
Author: CMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-14 20:24:15

Próbowałem CSharpJExcel i nie polecam go, przynajmniej dopóki nie będzie dostępna dokumentacja. Wbrew komentarzom deweloperów jest to , a nie Prosty Port natywny.

 2
Author: user483711,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-22 01:26:11

Wiem, że to dość późno, ale czuję się zmuszony odpowiedzieć xPorter (pisanie) i xlReader (Czytanie) z xPortTools.Net. przetestowaliśmy sporo bibliotek i nic nie zbliżyło się do wydajności (mówię tu o pisaniu milionów wierszy w sekundach). Nie mogę powiedzieć wystarczająco dużo dobrych rzeczy o tych produktach!

 2
Author: DanP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-03 00:08:15

Możesz użyć Microsoft.Jet.OLEDB.4.0

 2
Author: RG.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-24 21:30:37

Właśnie zidentyfikowaliśmy podobną potrzebę. I myślę, że ważne jest, aby wziąć pod uwagę doświadczenie użytkownika.

O mało nas nie ominęło to samo:

  1. Przygotowanie / praca w pliku arkusza kalkulacyjnego
  2. Zapisz plik
  3. Import pliku
  4. Praca z danymi w systemie

... workflow

Dodatek Express pozwala na utworzenie przycisku w programie Excel bez żmudnego mieszania się z VSTO. Następnie workflow staje się:

  1. Przygotowanie / praca w pliku arkusza kalkulacyjnego
  2. Import pliku (za pomocą przycisku wewnątrz Excela )
  3. Praca z danymi w systemie

Kod za przyciskiem użyj "natywnego" API programu Excel (poprzez dodatek Express) i wciśnij bezpośrednio do systemu odbiorcy. Nie można uzyskać znacznie bardziej przejrzyste dla dewelopera lub użytkownika. Warto się zastanowić.

 1
Author: Program.X,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-26 09:46:38

Jest całkiem dobry artykuł i biblioteka Na CodeProject autorstwa Yogesh Jagota:

Excel XML Import-Export Library

Używałem go do eksportowania danych z zapytań SQL i innych źródeł danych do Excela-działa dla mnie dobrze.

Cheers

 1
Author: marc_s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 21:42:12

Możesz wypróbować następującą bibliotekę, jest ona dość łatwa i jest tylko lekkim opakowaniem nad otwartym zestawem SDK XML firmy Microsoft (możesz nawet ponownie użyć formatowania, stylów, a nawet całych arkuszy z dodatkowego pliku Excel) : http://officehelper.codeplex.com

 1
Author: aron.sinoai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-24 16:21:04

Spreadsheetgear jest najlepszą komercyjną biblioteką, jaką znaleźliśmy i z której korzystamy. Nasza firma zajmuje się zaawansowanym importem i eksportem Excela, a Spreadsheetgear obsługuje wiele zaawansowanych funkcji Excela znacznie wykraczających poza wszystko, co można zrobić z prostym CSV i jest szybkie. Nie jest to jednak bezpłatne lub bardzo tanie, ale warto, ponieważ wsparcie jest doskonałe. Programiści odpowiedzą na Ciebie, jeśli napotkasz problem.

 0
Author: pilavdzice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-20 16:35:18

A może biblioteka Javy apache POI? Nie używałem go do Excela, ale używałem go do Worda 2007.

 0
Author: harijay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-22 01:30:17