W jednej z naszych aplikacji ASP.NET w języku C # pobieramy określoną kolekcję danych (kolekcję SubSonic) i eksportujemy ją do programu Excel. Chcemy również importować pliki Excel w określonym formacie. Szukam biblioteki, której mogę użyć do tego celu.
Wymagania:
- Pliki programu Excel 2007 (czy program Excel 2003 obsługuje ponad 64 tys. Wierszy? Potrzebuję więcej.)
- Nie wymaga programu Excel na serwerze
- Pobiera wpisaną kolekcję i, jeśli to możliwe, próbuje umieścić pola numeryczne jako numeryczne w programie Excel.
- Działa dobrze z dużymi plikami (100k do 10M) - wystarczająco szybko.
- Nie ulega awarii podczas eksportowania identyfikatorów GUID!
- Nie kosztuje ogromu pieniędzy (żadna biblioteka korporacyjna nie jest podobna). Darmowy jest zawsze świetny, ale może być biblioteką komercyjną.
Jaką bibliotekę polecasz? Czy używałeś go do dużych ilości danych? Czy są inne rozwiązania?
Obecnie używam prostego narzędzia, które generuje HTML ładowany później przez program Excel, ale tracę pewne możliwości, a program Excel narzeka, gdy go ładujemy. Nie muszę generować wykresów ani nic podobnego, wystarczy wyeksportować surowe dane.
Mam na myśli płaskie pliki CSV, ale Excel jest wymaganiem klienta. Mogę pracować bezpośrednio z CSV, jeśli miałbym narzędzie do konwersji do iz Excela. Biorąc pod uwagę, że Excel 2007 jest formatem pliku XML (i spakowanym), domyślam się, że tego rodzaju biblioteki powinny być łatwe do znalezienia. Jednak najważniejsze są dla mnie twoje komentarze i opinie.
EDYCJA: Jak na ironię, moim zdaniem i po odpowiedzi z największą liczbą głosów, najlepsza biblioteka importu i eksportu Excel w ogóle nie eksportuje. Nie dotyczy to wszystkich scenariuszy, ale dotyczy moich. Pliki XLS obsługują tylko 64k wierszy. XLSX obsługuje do 1M. Darmowe biblioteki, które wypróbowałem, mają niską wydajność (jedna sekunda, aby załadować jeden wiersz, gdy masz 200 000 wierszy). Nie wypróbowałem płatnych, ponieważ uważam, że są one zawyżone za wartość, którą zapewniają, gdy wszystko, czego potrzebujesz, to szybka procedura konwersji XLSX <-> CSV.
źródło
Odpowiedzi:
Zamierzam rzucić rękę na płaskie pliki csv, choćby dlatego, że masz największą kontrolę nad kodem. Po prostu upewnij się, że czytasz w wierszach i przetwarzasz je pojedynczo (czytanie dokumentu do końca i dzielenie pochłonie całą twoją pamięć - tak samo jak pisanie, przesyłanie strumieniowe).
Tak, użytkownik będzie musiał zapisać jako CSV w programie Excel, zanim będzie można go przetworzyć, ale być może ograniczenie to można pokonać, szkoląc się i udostępniając jasne instrukcje na stronie?
Wreszcie, gdy eksportujesz do klienta, jeśli ustawisz typ MIME na text / csv, Excel jest zwykle mapowany na ten typ, więc wydaje się, że użytkownik jest „plikiem Excel”.
źródło
Odkryłem Open XML SDK od mojej oryginalnej odpowiedzi. Zapewnia między innymi silnie typowane klasy dla obiektów arkusza kalkulacyjnego i wydaje się, że jest dość łatwa 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.
źródło
nowa wersja pakietu ExcelPackage znajduje się tutaj http://EPPlus.codeplex.com
Wciąż walczę z funkcją eksportu do programu Excel, ponieważ moja aplikacja powinna eksportować niektóre dane do programu Excel 2007
ten projekt wydaje mi się w porządku, a programista bardzo reaguje na błędy i problemy.
źródło
Korzystam z ClosedXML i działa świetnie!
źródło
SpreadsheetGear for .NET odczytuje i zapisuje CSV / XLS / XLSX i robi więcej.
Możesz zobaczyć próbki ASP.NET na żywo z kodem źródłowym C # i VB tutaj i pobrać bezpłatną wersję próbną tutaj .
Oczywiście uważam, że SpreadsheetGear to najlepsza biblioteka do importowania / eksportowania skoroszytów Excela w ASP.NET - ale jestem stronniczy. Po prawej stronie tej strony możesz zobaczyć, co mówią niektórzy z naszych klientów .
Oświadczenie: Jestem właścicielem SpreadsheetGear LLC
źródło
NPOI dla programu Excel 2003 Open Source http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
źródło
W przeszłości korzystałem z Flexcel i było świetnie. Było to jednak bardziej związane z programowym tworzeniem i aktualizowaniem arkuszy Excela.
źródło
Eksport CSV jest prosty, łatwy do wdrożenia i szybki. Warto jednak zwrócić uwagę na jeden potencjalny problem. Excel (do 2007 r.) Nie zachowuje zer wiodących w plikach CSV. Spowoduje to zniekształcenie 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 separatorów i wartości prefiksu ze znakiem =, jeśli dobrze pamiętam, np., = "02052", ...). Jeśli masz użytkowników, którzy będą wykonywać zadania przetwarzania końcowego za pomocą CSV, muszą mieć świadomość, że muszą zmienić format na XLS i nie zapisywać pliku z powrotem w CSV. Jeśli tak, wiodące zera zostaną utracone na zawsze.
źródło
Przez lata korzystałem z JExcel , doskonałego projektu Java typu open source. Był również w stanie .NET dzięki kompilacji J # i odniosłem również duży sukces w tym wcieleniu. Jednak ostatnio musiałem przeprowadzić migrację kodu do natywnej platformy .NET w celu obsługi 64-bitowej aplikacji IIS, w której tworzę dane wyjściowe programu Excel. Nie można załadować 32-bitowej wersji J #.
Kod dla CSharpJExcel to LGPL i jest obecnie dostępny na tej stronie, podczas gdy my przygotowujemy się do wdrożenia go w witrynie JExcel SourceForge. Skompiluje się z VS2005 lub VS2008. Przykłady w oryginalnej dokumentacji JExcel całkiem nieźle przejdą na nienaruszoną do wersji .NET.
Mam nadzieję, że jest to pomocne dla kogoś tutaj.
źródło
Pracowałem z excel jetcell od dłuższego czasu i naprawdę mogę go polecić. http://www.devtriogroup.com/exceljetcell
źródło
Poniższa witryna pokazuje, jak wyeksportować DataTable, DataSet lub List <> do „właściwego” pliku .xlsx programu Excel 2007 (zamiast eksportować plik .csv i otwierać go w programie Excel).
Korzysta z bibliotek OpenXML, więc nie musisz mieć programu Excel zainstalowanego na serwerze.
Baza wiedzy Mikes - ExportToExcel
Cały kod źródłowy jest udostępniany bezpłatnie , a także jako aplikacja demonstracyjna.
Bardzo łatwo jest dodać do własnych aplikacji, wystarczy wywołać jedną funkcję, przekazać nazwę pliku Excel i źródło danych:
Mam nadzieję że to pomoże.
źródło
Sprawdź projekt ExcelPackage , używa formatu pliku Office Open XML programu Excel 2007, jest lekki i open source ...
źródło
Próbowałem CSharpJExcel i nie poleciłbym go, przynajmniej dopóki nie będzie dostępna dokumentacja. W przeciwieństwie do twórców komentuje to nie prosty natywnego portu.
źródło
Wiem, że jest już dość późno, ale czuję się zmuszony odpowiedzieć na xPorter (pisanie) i xlReader (czytanie) z xPortTools.Net . Przetestowaliśmy sporo bibliotek i nic nie zbliżyło się do wydajności (mówię o pisaniu milionów wierszy w ciągu kilku sekund). Nie mogę powiedzieć wystarczająco dobrych rzeczy o tych produktach!
źródło
Możesz użyć
Microsoft.Jet.OLEDB.4.0
źródło
Właśnie zidentyfikowaliśmy podobną potrzebę. I myślę, że ważne jest, aby wziąć pod uwagę wrażenia użytkownika.
Prawie zostaliśmy omijani po tym samym:
... przepływ pracy
Dodatek Express umożliwia utworzenie przycisku w programie Excel bez konieczności żmudnego korzystania z VSTO. Następnie przepływ pracy staje się:
Niech kod za przyciskiem użyje „natywnego” Excel API (poprzez Add-in Express) i wcisnie bezpośrednio do systemu odbiorcy. Nie można uzyskać znacznie bardziej przejrzystego dla programisty lub użytkownika. Warte rozważenia.
źródło
Na CodeProject autorstwa Yogesh Jagota znajduje się całkiem niezły artykuł i biblioteka:
Excel XML Import-Export Library
Użyłem go do eksportowania danych z zapytań SQL i innych źródeł danych do Excela - działa dla mnie dobrze.
Twoje zdrowie
źródło
Możesz wypróbować następującą bibliotekę, jest to dość łatwe i jest tylko lekkim opakowaniem w pakiecie Microsoft Open XML SDK (możesz nawet ponownie używać formatowania, stylów, a nawet całych arkuszy z dodatkowego pliku Excel): http://officehelper.codeplex.com
źródło
Spreadsheetgear to najlepsza biblioteka komercyjna, jaką znaleźliśmy i używamy. Nasza firma zajmuje się importowaniem i eksportowaniem zaawansowanego programu Excel, a arkusz kalkulacyjny obsługuje wiele zaawansowanych funkcji programu Excel znacznie wykraczających poza wszystko, co można zrobić za pomocą prostego pliku CSV, i jest szybki. Nie jest darmowy ani bardzo tani, ale warto, ponieważ wsparcie jest doskonałe. Programiści faktycznie odpowiedzą, jeśli napotkasz problem.
źródło
A co z biblioteką apache POI Java. Nie korzystałem z niego w programie Excel, ale użyłem go w programie Word 2007.
źródło