"... tanpa menginstal Ms Office?" bagian dari pertanyaan itu terdengar sangat tidak profesional. Anda dapat menghasilkan semua jenis file dari program C # (dengan salah satu file xlsatau xlsxsalah satunya). Ini bukan persyaratan bahwa ada program di komputer Anda yang dapat membacanya (katakanlah, biner).
Mike
30
@ Mike Sepotong "tanpa membutuhkan Excel untuk diinstal" tidak ada hubungannya dengan menjadi profesional. Ini tentang ketergantungan. Teks asli dari pertanyaan diucapkan sebagai: "Idealnya, saya ingin open source jadi saya tidak perlu menambahkan dependensi pihak ketiga ke kode saya, dan saya ingin menghindari menggunakan Excel secara langsung untuk membuat file (menggunakan OLE Otomasi.) " Sayangnya pertanyaan itu disederhanakan secara drastis.
Tony
5
Dengan asumsi Anda mencoba melakukan sesuatu tanpa perpustakaan atau kode eksternal, saya tidak dapat berbicara untuk file xls, tetapi untuk file xlsx, mengapa tidak memulai dengan mengambil yang sudah ada, mengganti nama file tersebut menjadi file zip dan menjelajahi isinya? Sedikit teknik terbalik akan memberi tahu Anda sedikit. Ada beberapa file xml yang berbeda dan menghubungkan file dalam berbagai folder dan subfolder. Coba jelajahi dan lihat apakah itu sesuatu yang dapat Anda tiru atau lihat apakah Anda dapat menemukan dokumentasi di berbagai ruang nama xml / skema.
Alexander Ryan Baggett
@AlexanderRyanBaggett Ini sangat membantu! Datang melintasi pos ini saat bekerja pada pembuatan laporan otomatis dan menjelajahi dokumen sebagai arsip zip memberikan cukup banyak wawasan tentang apa yang terjadi dalam membuat file dokumen.
SentientFlesh
Jawaban:
1055
Anda dapat menggunakan perpustakaan yang disebut ExcelLibrary. Ini adalah perpustakaan sumber terbuka gratis yang diposting di Google Code:
Ini terlihat sebagai port dari PHP ExcelWriter yang Anda sebutkan di atas. Itu belum akan menulis ke format .xlsx baru, tetapi mereka sedang berusaha menambahkan fungsionalitas itu di.
Ini sangat sederhana, kecil dan mudah digunakan. Plus itu memiliki DataSetHelper yang memungkinkan Anda menggunakan DataSets dan DataTables untuk dengan mudah bekerja dengan data Excel.
ExcelLibrary tampaknya masih hanya berfungsi untuk format Excel yang lebih lama (file .xls), tetapi mungkin menambahkan dukungan di masa depan untuk format 2007/2010 yang lebih baru.
Anda juga dapat menggunakan EPPlus , yang hanya berfungsi untuk file format Excel 2007/2010 (file .xlsx). Ada juga NPOI yang berfungsi dengan baik.
Ada beberapa bug yang diketahui dengan masing-masing perpustakaan seperti yang tercantum dalam komentar. Secara keseluruhan, EPPlus tampaknya menjadi pilihan terbaik seiring berjalannya waktu. Tampaknya lebih aktif diperbarui dan didokumentasikan juga.
Selain itu, seperti yang dicatat oleh @ АртёмЦарионов di bawah, EPPlus memiliki dukungan untuk Pivot Tables dan ExcelLibrary mungkin memiliki beberapa dukungan ( masalah tabel Pivot di ExcelLibrary )
Berikut adalah contoh mengambil data dari database dan membuat buku kerja dari itu. Perhatikan bahwa kode ExcelLibrary adalah baris tunggal di bagian bawah:
//Create the data set and tableDataSet ds =newDataSet("New_DataSet");DataTable dt =newDataTable("New_DataTable");//Set the locale for each
ds.Locale=System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale=System.Threading.Thread.CurrentThread.CurrentCulture;//Open a DB connection (in this example with OleDB)OleDbConnection con =newOleDbConnection(dbConnectionString);
con.Open();//Create a query and fill the data table with the data from the DBstring sql ="SELECT Whatever FROM MyDBTable;";OleDbCommand cmd =newOleDbCommand(sql, con);OleDbDataAdapter adptr =newOleDbDataAdapter();
adptr.SelectCommand= cmd;
adptr.Fill(dt);
con.Close();//Add the table to the data set
ds.Tables.Add(dt);//Here's the easy part. Create the Excel worksheet from the data setExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);
Membuat file Excel semudah itu. Anda juga dapat secara manual membuat file Excel, tetapi fungsionalitas di atas sangat mengesankan saya.
ExcelLibrary telah digantikan oleh EPPlus yang luar biasa - epplus.codeplex.com . Jan memperbaruinya secara teratur. Telah menggunakannya dan ini adalah salah satu proyek open source terbaik yang pernah kami tangani.
Mark A
3
Perlu dicatat bahwa ExcelLibrary memiliki banyak masalah kinerja ketika berhadapan dengan dataset besar (lebih dari 5000 baris dengan banyak kolom). Saat ini sedang melakukan modifikasi besar-besaran pada basis kode di tempat kerja sehingga kami dapat menggunakannya dalam suatu proyek.
rossisdead
EPPlus tampaknya jauh lebih tidak stabil daripada ExcelLibrary, TETAPI itu adalah GPL dan karenanya hanya solusi untuk proyek sumber terbuka.
Bagaimana dengan ClosedXML ? Saya mungkin terbukti bermanfaat dalam proyek Anda.
Amadeus Sánchez
589
Jika Anda puas dengan format xlsx, coba proyek GitHub saya, EPPlus . Itu dimulai dengan sumber dari ExcelPackage, tetapi hari ini adalah penulisan ulang total. Ini mendukung rentang, penataan sel, bagan, bentuk, gambar, rentang bernama, AutoFilter dan banyak hal lainnya.
Contoh-contohnya sangat membantu. Saya dapat mengubah kode saya dari menggunakan perpustakaan interop Microsoft (sangat lambat) ke perpustakaan ini (versi 4.x) dalam beberapa jam. Benchmark saya menulis file dengan dua tab dan sekitar 750.000 sel. Menggunakan MS interop butuh 13 menit. Menggunakan EPPlus butuh 10 detik, kecepatan sekitar 80x. Sangat senang!
Paul Chernoch
3
Untuk kejelasan dalam utas ini, LGPL memungkinkan perangkat lunak untuk dihubungkan tanpa bagian infektif dari GPL. Anda hanya perlu membuka perubahan sumber yang Anda buat ke ClosedXml atau jika Anda langsung memasukkan kode sumber (sebagai ganti referensi rakitan ClosedXml) di dalam aplikasi Anda maka Anda perlu membuka sumber aplikasi Anda.
Chris Marisic
4
@ Paul Chernoch: Kami mengisi lembar Excel besar dengan interop dengan sangat cepat. Rahasianya adalah melakukan pembaruan massal. Buat objek [,] blok, isi itu, lalu tulis matriks itu ke Excel pada satu waktu: excelWorksheet.get_Range (range) .Value2 = blok;
Marc Meketon
2
Sepertinya perizinan sedang beralih dari LGPL ke Polyform Noncommercial 1.0.0 lisensi
Luke
175
Dan bagaimana dengan menggunakan Open XML SDK 2.0 untuk Microsoft Office?
Beberapa manfaat:
Tidak memerlukan Office diinstal
Dibuat oleh Microsoft = dokumentasi MSDN yang layak
Hanya satu. Net dll untuk digunakan dalam proyek
SDK dilengkapi dengan banyak alat seperti diff, validator, dll
Penting untuk dicatat bahwa DLL untuk ini hanya lebih dari 5 MB dan terbatas pada format Office 2007. Tapi tentu saja solusi termudah dan tercepat yang bekerja untuk saya.
Josh Brown
18
Hanya kepala yang v2.5 keluar dan dapat didownload di sini .
Snuffleupagus
10
SDK memodelkan XML ke dalam kelas, sehingga setiap tag XML dipetakan ke sebuah tag, dan kemudian Anda harus membangun hierarki kelas (setiap instance memiliki koleksi instance / tag anak) dengan benar. Ini berarti Anda harus mengetahui struktur XML dari file Excel, yang sangat rumit. Lebih mudah menggunakan pembungkus seperti EPPlus, yang disebutkan di atas, yang menyederhanakan banyak hal.
Saya menemukan Microsoft Open XML Writer Open XML SDK menjadi hebat. Menggunakan solusi di atas, (Terutama sampel Vincent Tom (Poly Math)), mudah untuk membangun seorang penulis yang mengalir melalui set besar data, dan menulis catatan dengan cara yang serupa dan tidak terlalu jauh lebih kompleks dengan apa yang akan Anda lakukan untuk CSV; tetapi Anda malah menulis xml. Open XML adalah pola pikir yang oleh Microsoft menganggap itu format Office baru. Dan Anda selalu dapat mengubah nama dari file .xslx ke .zip jika Anda ingin menyodok konten XML mereka.
Greg
167
Saya telah menggunakan dengan sukses proyek open source berikut:
ExcelPackage untuk format OOXML (Office 2007)
NPOI untuk format .XLS (Office 2003). NPOI 2.0 (Beta) juga mendukung XLSX.
Adakah yang bisa mengkonfirmasi apakah ini berfungsi saat berjalan di x64? Saya cukup yakin Jet hanya berfungsi jika aplikasi Anda dikompilasi atau dijalankan dalam mode 32-bit.
Lamar
2
Saya baru saja menguji koneksi ini dan gagal pada Windows Server 2008 R2 x64 RC, sepertinya kita harus menginstal Driver Sistem Office 2007: Komponen Konektivitas Data [ microsoft.com/downloads/…
Chris Richner
25
Berhati-hatilah dengan ini - ini adalah dempul jelek yang besar (misalnya, terkadang menebak jenis kolom dan membuang semua data yang tidak sesuai).
dbkk
9
Seseorang harus sangat berhati-hati jika menggunakan metode ini. Saya merasa sangat rapuh untuk data yang tidak dalam format yang sempurna.
Kenny Mann
9
Sebagai orang yang harus menggunakan OleDb dalam proyek besar, saya katakan TINGGAL JAUH DARI ITU! Terkadang tidak dapat mengambil nilai sel hanya karena tidak dapat memahami formatnya. Itu tidak memiliki operasi penghapusan. Ini bekerja sangat berbeda dan tidak dapat diprediksi bahkan dengan perubahan penyedia sedikit pun. Saya akan mengatakan pergi untuk solusi komersial yang terbukti.
Anda memiliki produk hebat, tetapi saya pikir banyak orang di sini mengharapkan solusi gratis. Itu mungkin menjelaskan suara turun.
md1337
65
Beberapa opsi yang saya gunakan:
Jika XLSX adalah suatu keharusan: ExcelPackage adalah awal yang baik tetapi mati ketika pengembang berhenti bekerja di atasnya. ExML mengambil dari sana dan menambahkan beberapa fitur. ExML bukan pilihan yang buruk, saya masih menggunakannya di beberapa situs web produksi.
Hati-hati dengan ExcelPackage jika Anda perlu mendukung XLS. Saya mengalami kesulitan dengan itu dan akhirnya beralih ke ExcelLibrary.
Jeremy
Jelas benar. ExcelPackage / ExML hanya opsi yang baik jika Anda memerlukan dukungan XLSX.
Nate
5
Perhatikan bahwa ExcelPackage memiliki penerus: EPPlus ( epplus.codeplex.com ) yang mendukung XLSX. Satu-satunya kekhawatiran saya, dibandingkan dengan NPOI misalnya, adalah kinerja, misalnya ketika ada banyak kolom.
Pragmateek
63
Opsi yang sangat ringan mungkin menggunakan tabel HTML. Cukup buat tag kepala, badan, dan tabel dalam file, dan simpan sebagai file dengan ekstensi .xls. Ada atribut khusus Microsoft yang dapat Anda gunakan untuk mendesain output, termasuk formula.
Saya menyadari bahwa Anda mungkin tidak mengkodekan ini dalam aplikasi web, tetapi di sini adalah contoh komposisi file Excel melalui tabel HTML. Teknik ini dapat digunakan jika Anda membuat kode aplikasi konsol, aplikasi desktop, atau layanan.
Ini sangat ad hoc tetapi berhasil (belum lagi excel mengeluarkan peringatan pada pembukaan) dan sangat sederhana, layak mendapat tempat sebagai solusi. Meskipun hanya untuk menunjukkan bahwa Anda dapat mengekspor file excel :))
Luka Ramishvili
3
Solusi ini bekerja dengan baik untuk saya, hanya perhatikan Anda tidak dapat menggunakan ekstensi .xlsx
Jill
Beberapa orang di organisasi saya tidak dapat membuka file excel dengan cara ini di Office 2010 dan di atasnya. Tidak tahu apa masalahnya, tapi saya harus memutar implementasi OpenXML saya sendiri. (lihat jawaban Sogger)
Ini menyediakan cara berorientasi objek untuk memanipulasi file (mirip dengan VBA) tanpa berurusan dengan kerepotan Dokumen XML. Ini dapat digunakan oleh bahasa .NET seperti C # dan Visual Basic (VB).
ClosedXML memungkinkan Anda membuat file Excel 2007/2010 tanpa aplikasi Excel. Contoh khas adalah membuat laporan Excel di server web:
var workbook =newXLWorkbook();var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value="Hello World!";
workbook.SaveAs("HelloWorld.xlsx");
Saya mencoba menggunakan ini dalam proyek yang membangun lembar Excel yang cukup besar. Pustaka yang bagus, tetapi kinerjanya sangat buruk. Saya baru saja melakukan perbandingan untuk proyek yang sedang saya kerjakan: ClosedXML (v 0.53.3) mengambil 92.489 ms sedangkan EPPlus (v 2.9.03, untuk pengujian - kami tidak dapat menggunakan karena itu GPL) membutuhkan 16.500 ms.
Druid
1
@Druid, lisensinya LGPL dengan asumsi Anda tidak mengubah kode sumber menjadi ClosedXML, bebas menggunakan epplus.codeplex.com/license
Anda sebenarnya mungkin ingin memeriksa kelas interop yang tersedia dalam C # (mis Microsoft.Office.Interop.Excel. Anda mengatakan tidak OLE (yang ini bukan), tetapi kelas interop sangat mudah digunakan. Lihat Dokumentasi C # di sini (Interop untuk Excel dimulai pada halaman 1072 dari C # PDF).
Microsoft saat ini tidak merekomendasikan, dan tidak mendukung, Otomatisasi aplikasi Microsoft Office dari aplikasi atau komponen klien non-interaktif yang tidak dijaga (termasuk ASP, ASP.NET, DCOM, dan Layanan NT), karena Office mungkin menunjukkan perilaku yang tidak stabil dan / atau jalan buntu saat Office dijalankan di lingkungan ini.
Tetapi Anda harus memastikan bahwa Anda membuang semuanya secara manual, jika tidak, Anda akan membocorkan memori
MagicKat
8
@ Ricky B: Juga, dalam pengalaman saya dengan interop adalah ia menggunakan excel. Setiap kali kami menggunakannya, jika Excel tidak diinstal pada mesin, kami akan mendapatkan pengecualian COM.
MagicKat
1
Dengan OLE, bahkan dengan pembuangan yang sangat hati-hati, akhirnya kebocoran memori atau crash. Ini bisa dibilang OK untuk aplikasi / workstation yang dihadiri, tetapi untuk server tidak disarankan (MS memiliki KB yang menyatakan ini). Untuk server kami, kami hanya perlu reboot setiap malam. Sekali lagi, itu berfungsi dengan baik.
Jennifer Zouak
11
@ Geoffrey: ah OK, Anda akan membuat saya bekerja untuk itu :) -> support.microsoft.com/kb/257757 Microsoft saat ini tidak merekomendasikan, dan tidak mendukung, Otomasi aplikasi Microsoft Office dari sembarang pengawalan, non- aplikasi klien interaktif ...
Jennifer Zouak
4
Saya datang ke diskusi ini setelah berjuang lebih dari seminggu di interop, dan kecuali kebutuhan Anda sangat sederhana, ini tidak akan berhasil. Dukungan untuk memformat spreadsheet Anda tidak masuk akal, yang bisa menjadi alasan untuk menghasilkan file .xls dan bukan hanya file .csv yang rata. Misalnya, sudahkah Anda mencoba menghasilkan lebih dari 911 karakter dalam sel, atau apakah Anda mencoba mengatur lebar sel yang digabungkan secara konsisten? Saya sudah, dan saya tidak bisa memberi tahu Anda betapa saya membenci omong kosong ini sekarang ... Tolong diri Anda dan pergi dengan salah satu perpustakaan gratis yang disebutkan dalam diskusi ini.
md1337
34
Berikut adalah perpustakaan C # yang sepenuhnya gratis, yang memungkinkan Anda mengekspor dari DataSet, DataTableatauList<> ke file Excel 2007 .xlsx asli, menggunakan pustaka OpenXML:
Ini tampaknya agak menyesatkan, karena Anda meminta sumbangan untuk mendapatkan semua fitur.
UrbanEsc
Itu sebagian benar: Versi gratis sepenuhnya akan menghasilkan file .xlsx yang sempurna untuk Anda, dan semua kode sumber disediakan. Jika Anda menyumbangkan $ 10 atau lebih ke salah satu dari dua badan amal itu (yang saya tidak menerima apa-apa sama sekali), maka Anda mendapatkan versi "lebih baik" yang menunjukkan cara melakukan format, tanggal, dll. Mengingat biaya produk pihak ketiga, saya rasa menyumbang $ 10 untuk tujuan yang baik malah sangat berharga!
Mereka memiliki versi gratis dengan semua fitur tetapi dibatasi hingga 150 baris per lembar dan 5 lembar per buku kerja, jika itu sesuai dengan kebutuhan Anda.
Saya belum perlu menggunakannya sendiri, tetapi memang terlihat menarik.
Syncfusion Essential XlsIO dapat melakukan ini. Tidak memiliki ketergantungan pada Microsoft office dan juga memiliki dukungan khusus untuk platform yang berbeda.
//Creates a new instance for ExcelEngine.ExcelEngine excelEngine =newExcelEngine();//Loads or open an existing workbook through Open method of IWorkbooksIWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);//To-Do some manipulation|//To-Do some manipulation//Set the version of the workbook.
workbook.Version=ExcelVersion.Excel2013;//Save the workbook in file system as xlsx format
workbook.SaveAs(outputFileName);
Seluruh rangkaian kontrol tersedia secara gratis melalui program lisensi komunitas jika Anda memenuhi syarat (pendapatan kurang dari 1 juta USD). Catatan: Saya bekerja untuk Syncfusion.
Untuk lebih tepatnya, Anda dapat menggunakan Aspose.Cells untuk .NET untuk membuat file Excel (XLS, XLSX) di aplikasi .NET Anda.
Shahzad Latif
9
Ya Anda bisa, jika Anda tidak keberatan membayar biaya lisensi minimum $ 999. Coba pustaka MikesKnowledgeBase ... yang mana lebih murah $ 999 dari ini !!
Mike Gledhill
17
OpenXML juga merupakan alternatif yang baik yang membantu menghindari menginstal MS Excel di Server. Open XML SDK 2.0 yang disediakan oleh Microsoft menyederhanakan tugas memanipulasi paket Open XML dan elemen skema Open XML yang mendasarinya dalam sebuah paket. Open XML Application Programming Interface (API) merangkum banyak tugas umum yang dilakukan pengembang pada paket Open XML.
Berbagai pustaka Office 2003 XML yang tersedia tersedia dengan cukup baik untuk file excel yang lebih kecil. Namun, saya menemukan ukuran tipis dari buku kerja besar yang disimpan dalam format XML menjadi masalah. Misalnya, buku kerja tempat saya bekerja dengan ukuran 40 MB dalam format XLSX yang baru (dan tentunya lebih padat) menjadi file XML 360MB.
Sejauh penelitian saya telah mengambil saya, ada dua paket komersial yang memungkinkan output ke format file biner yang lebih lama. Mereka:
Tidak ada yang murah (masing-masing 500USD dan 800USD, saya pikir). tetapi keduanya bekerja independen dari Excel itu sendiri.
Apa yang saya ingin tahu tentang adalah modul output Excel untuk orang-orang seperti OpenOffice.org. Saya ingin tahu apakah mereka dapat diangkut dari Jawa ke .Net.
Yang ini bekerja pada kedua .net dan java, dan tidak mahal. SmartXLS smartxls.com
liya
15
Saya setuju tentang membuat XML Spreadsheets, berikut adalah contoh tentang bagaimana melakukannya untuk C # 3 (semua orang hanya blog tentang hal itu di VB 9: P) http://www.aaron-powell.com/linq-to-xml-to- unggul
Saya baru saja digunakan FlexCel.NET dan menemukannya sebagai pustaka yang sangat baik! Saya tidak mengatakan itu tentang terlalu banyak produk perangkat lunak. Tidak ada gunanya memberikan seluruh penjualan di sini, Anda dapat membaca semua fitur di situs web mereka.
Ini adalah produk komersial, tetapi Anda mendapatkan sumber lengkap jika Anda membelinya. Jadi saya kira Anda bisa mengkompilasinya ke dalam perakitan Anda jika Anda benar-benar menginginkannya. Kalau tidak, itu hanya satu rakitan tambahan untuk xcopy - tidak ada konfigurasi atau instalasi atau semacamnya.
Saya tidak berpikir Anda akan menemukan cara untuk melakukan ini tanpa perpustakaan pihak ketiga sebagai .NET framework, jelas, tidak dibangun untuk mendukungnya dan OLE Automation hanya seluruh dunia yang menyakitkan.
Saya telah menulis kode sederhana untuk mengekspor dataset ke excel tanpa menggunakan objek excel dengan menggunakan System.IO.StreamWriter.
Di bawah ini adalah kode yang akan membaca semua tabel dari dataset dan menuliskannya ke lembar satu per satu. Saya mengambil bantuan dari artikel ini .
publicstaticvoid exportToExcel(DataSet source,string fileName){conststring endExcelXML ="</Workbook>";conststring startExcelXML ="<xml version>\r\n<Workbook "+"xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"\r\n"+" xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n "+"xmlns:x=\"urn:schemas- microsoft-com:office:"+"excel\"\r\n xmlns:ss=\"urn:schemas-microsoft-com:"+"office:spreadsheet\">\r\n <Styles>\r\n "+"<Style ss:ID=\"Default\" ss:Name=\"Normal\">\r\n "+"<Alignment ss:Vertical=\"Bottom\"/>\r\n <Borders/>"+"\r\n <Font/>\r\n <Interior/>\r\n <NumberFormat/>"+"\r\n <Protection/>\r\n </Style>\r\n "+"<Style ss:ID=\"BoldColumn\">\r\n <Font "+"x:Family=\"Swiss\" ss:Bold=\"1\"/>\r\n </Style>\r\n "+"<Style ss:ID=\"StringLiteral\">\r\n <NumberFormat"+" ss:Format=\"@\"/>\r\n </Style>\r\n <Style "+"ss:ID=\"Decimal\">\r\n <NumberFormat "+"ss:Format=\"0.0000\"/>\r\n </Style>\r\n "+"<Style ss:ID=\"Integer\">\r\n <NumberFormat "+"ss:Format=\"0\"/>\r\n </Style>\r\n <Style "+"ss:ID=\"DateLiteral\">\r\n <NumberFormat "+"ss:Format=\"mm/dd/yyyy;@\"/>\r\n </Style>\r\n "+"</Styles>\r\n ";System.IO.StreamWriter excelDoc =null;
excelDoc =newSystem.IO.StreamWriter(fileName);int sheetCount =1;
excelDoc.Write(startExcelXML);foreach(DataTable table in source.Tables){int rowCount =0;
excelDoc.Write("<Worksheet ss:Name=\""+ table.TableName+"\">");
excelDoc.Write("<Table>");
excelDoc.Write("<Row>");for(int x =0; x < table.Columns.Count; x++){
excelDoc.Write("<Cell ss:StyleID=\"BoldColumn\"><Data ss:Type=\"String\">");
excelDoc.Write(table.Columns[x].ColumnName);
excelDoc.Write("</Data></Cell>");}
excelDoc.Write("</Row>");foreach(DataRow x in table.Rows){
rowCount++;//if the number of rows is > 64000 create a new page to continue outputif(rowCount ==64000){
rowCount =0;
sheetCount++;
excelDoc.Write("</Table>");
excelDoc.Write(" </Worksheet>");
excelDoc.Write("<Worksheet ss:Name=\""+ table.TableName+"\">");
excelDoc.Write("<Table>");}
excelDoc.Write("<Row>");//ID=" + rowCount + "for(int y =0; y < table.Columns.Count; y++){System.Type rowType;
rowType = x[y].GetType();switch(rowType.ToString()){case"System.String":stringXMLstring= x[y].ToString();XMLstring=XMLstring.Trim();XMLstring=XMLstring.Replace("&","&");XMLstring=XMLstring.Replace(">",">");XMLstring=XMLstring.Replace("<","<");
excelDoc.Write("<Cell ss:StyleID=\"StringLiteral\">"+"<Data ss:Type=\"String\">");
excelDoc.Write(XMLstring);
excelDoc.Write("</Data></Cell>");break;case"System.DateTime"://Excel has a specific Date Format of YYYY-MM-DD followed by //the letter 'T' then hh:mm:sss.lll Example 2005-01-31T24:01:21.000//The Following Code puts the date stored in XMLDate //to the format aboveDateTimeXMLDate=(DateTime)x[y];stringXMLDatetoString="";//Excel Converted DateXMLDatetoString=XMLDate.Year.ToString()+"-"+(XMLDate.Month<10?"0"+XMLDate.Month.ToString():XMLDate.Month.ToString())+"-"+(XMLDate.Day<10?"0"+XMLDate.Day.ToString():XMLDate.Day.ToString())+"T"+(XMLDate.Hour<10?"0"+XMLDate.Hour.ToString():XMLDate.Hour.ToString())+":"+(XMLDate.Minute<10?"0"+XMLDate.Minute.ToString():XMLDate.Minute.ToString())+":"+(XMLDate.Second<10?"0"+XMLDate.Second.ToString():XMLDate.Second.ToString())+".000";
excelDoc.Write("<Cell ss:StyleID=\"DateLiteral\">"+"<Data ss:Type=\"DateTime\">");
excelDoc.Write(XMLDatetoString);
excelDoc.Write("</Data></Cell>");break;case"System.Boolean":
excelDoc.Write("<Cell ss:StyleID=\"StringLiteral\">"+"<Data ss:Type=\"String\">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");break;case"System.Int16":case"System.Int32":case"System.Int64":case"System.Byte":
excelDoc.Write("<Cell ss:StyleID=\"Integer\">"+"<Data ss:Type=\"Number\">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");break;case"System.Decimal":case"System.Double":
excelDoc.Write("<Cell ss:StyleID=\"Decimal\">"+"<Data ss:Type=\"Number\">");
excelDoc.Write(x[y].ToString());
excelDoc.Write("</Data></Cell>");break;case"System.DBNull":
excelDoc.Write("<Cell ss:StyleID=\"StringLiteral\">"+"<Data ss:Type=\"String\">");
excelDoc.Write("");
excelDoc.Write("</Data></Cell>");break;default:throw(newException(rowType.ToString()+" not handled."));}}
excelDoc.Write("</Row>");}
excelDoc.Write("</Table>");
excelDoc.Write(" </Worksheet>");
sheetCount++;}
excelDoc.Write(endExcelXML);
excelDoc.Close();}
Seperti yang dikatakan artikel itu, XML itulah yang akan dibaca Excel daripada benar-benar menjadi file XLS, yang berarti itu mungkin hanya berfungsi di Excel dan bukan program lain yang membaca spreadsheet. Tapi itu mungkin lebih baik daripada jawaban tabel HTML yang setara di sini!
Rup
Mendukung xlsx ? OpenXML ?
Kiquenet
14
Hanya ingin menambahkan referensi lain ke solusi pihak ketiga yang secara langsung mengatasi masalah Anda: http://www.officewriter.com
(Penafian: Saya bekerja untuk SoftArtisans, perusahaan yang membuat OfficeWriter)
Agak rumit, karena Anda harus mengimpor ruang nama dan lain-lain, tetapi itu memungkinkan Anda menghindari ketergantungan eksternal.
(Juga, tentu saja, itu VB. NET, bukan C #, tetapi Anda selalu dapat mengisolasi VB. NET dalam proyek sendiri untuk menggunakan XML Literals, dan melakukan segala sesuatu yang lain dalam C #.)
Beberapa vendor komponen pihak ketiga seperti Infragistics atau Syncfusion menyediakan kemampuan ekspor Excel yang sangat baik yang tidak memerlukan Microsoft Excel untuk diinstal.
Karena vendor ini juga menyediakan komponen kisi UI canggih, komponen ini sangat berguna jika Anda ingin gaya dan tata letak ekspor excel untuk meniru kondisi kisi saat ini dalam antarmuka pengguna aplikasi Anda.
Jika ekspor Anda dimaksudkan untuk dieksekusi di sisi server dengan penekanan pada data yang akan diekspor dan tanpa tautan ke UI, maka saya akan memilih salah satu opsi open source gratis (mis. ExcelLibrary).
Saya sebelumnya telah terlibat dengan proyek-proyek yang berusaha menggunakan otomatisasi sisi server pada suite Microsoft Office. Berdasarkan pengalaman ini saya akan sangat merekomendasikan terhadap pendekatan itu.
publicclassGridViewExportUtil{publicstaticvoidExport(string fileName,GridView gv){HttpContext.Current.Response.Clear();HttpContext.Current.Response.AddHeader("content-disposition",string.Format("attachment; filename={0}", fileName));HttpContext.Current.Response.ContentType="application/ms-excel";
using (StringWriter sw =newStringWriter()){
using (HtmlTextWriter htw =newHtmlTextWriter(sw)){// Create a form to contain the gridTable table =newTable();// add the header row to the tableif(gv.HeaderRow!=null){GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
table.Rows.Add(gv.HeaderRow);}// add each of the data rows to the tableforeach(GridViewRow row in gv.Rows){GridViewExportUtil.PrepareControlForExport(row);
table.Rows.Add(row);}// add the footer row to the tableif(gv.FooterRow!=null){GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
table.Rows.Add(gv.FooterRow);}// render the table into the htmlwriter
table.RenderControl(htw);// render the htmlwriter into the responseHttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.End();}}}/// <summary>/// Replace any of the contained controls with literals/// </summary>/// <param name="control"></param>privatestaticvoidPrepareControlForExport(Control control){for(int i =0; i < control.Controls.Count; i++){Control current = control.Controls[i];if(current isLinkButton){
control.Controls.Remove(current);
control.Controls.AddAt(i,newLiteralControl((current asLinkButton).Text));}elseif(current isImageButton){
control.Controls.Remove(current);
control.Controls.AddAt(i,newLiteralControl((current asImageButton).AlternateText));}elseif(current isHyperLink){
control.Controls.Remove(current);
control.Controls.AddAt(i,newLiteralControl((current asHyperLink).Text));}elseif(current isDropDownList){
control.Controls.Remove(current);
control.Controls.AddAt(i,newLiteralControl((current asDropDownList).SelectedItem.Text));}elseif(current isCheckBox){
control.Controls.Remove(current);
control.Controls.AddAt(i,newLiteralControl((current asCheckBox).Checked?"True":"False"));}if(current.HasControls()){GridViewExportUtil.PrepareControlForExport(current);}}}}
Hai solusi ini adalah untuk mengekspor tampilan grid Anda ke file excel Anda mungkin dapat membantu Anda
Tidak, ini menghasilkan HTML yang ditandai sebagai file Excel dan bukan file Excel yang sebenarnya. Ya, Excel sendiri akan membuka OK itu tetapi program lain yang menggunakan spreadsheet - misalnya, penampil Excel gratis dari Microsoft - tidak akan menerimanya. Anda sebaiknya membuat file Excel nyata menggunakan salah satu perpustakaan di sini.
Rup
Anda juga harus menggunakan System.Net.Mime.ContentDisposition untuk menghasilkan teks header disposisi-konten daripada menambahkan string - yang akan mengatasi nama file yang berisi spasi dll dengan benar.
using (ExcelHelper helper =newExcelHelper(TEMPLATE_FILE_NAME, GENERATED_FILE_NAME)){
helper.Direction=ExcelHelper.DirectionType.TOP_TO_DOWN;
helper.CurrentSheetName="Sheet1";
helper.CurrentPosition=newCellRef("C3");//the template xlsx should contains the named range "header"; use the command "insert"/"name".
helper.InsertRange("header");//the template xlsx should contains the named range "sample1";//inside this range you should have cells with these values://<name> , <value> and <comment>, which will be replaced by the values from the getSample()CellRangeTemplate sample1 = helper.CreateCellRangeTemplate("sample1",newList<string>{"name","value","comment"});
helper.InsertRange(sample1, getSample());//you could use here other named ranges to insert new cells and call InsertRange as many times you want, //it will be copied one after another;//even you can change direction or the current cell/sheet before you insert//typically you put all your "template ranges" (the names) on the same sheet and then you just delete it
helper.DeleteSheet("Sheet3");}
tempat sampel terlihat seperti ini:
privateIEnumerable<List<object>> getSample(){var random =newRandom();for(int loop =0; loop <3000; loop++){yieldreturnnewList<object>{"test",DateTime.Now.AddDays(random.NextDouble()*100-50), loop};}}
Cara termudah dan tercepat untuk membuat file Excel dari C # adalah dengan menggunakan Alat Produktivitas Open XML. Open XML Productivity Tool hadir dengan instalasi Open XML SDK. Alat ini membalikkan semua file Excel menjadi kode C #. Kode C # kemudian dapat digunakan untuk menghasilkan kembali file itu.
Gambaran umum proses yang terlibat adalah:
Instal Open XML SDK dengan alat.
Buat file Excel menggunakan klien Excel terbaru dengan tampilan yang diinginkan. Beri nama DesiredLook.xlsx.
Dengan alat terbuka DesiredLook.xlsxdan klik tombol Reflect Code di dekat bagian atas.
Kode C # untuk file Anda akan dihasilkan di panel kanan alat. Tambahkan ini ke solusi C # Anda dan hasilkan file dengan tampilan yang diinginkan.
Sebagai bonus, metode ini berfungsi untuk semua file Word dan PowerPoint. Sebagai pengembang C #, Anda kemudian akan membuat perubahan pada kode yang sesuai dengan kebutuhan Anda.
Saya telah mengembangkan aplikasi WPF sederhana di github yang akan berjalan di Windows untuk tujuan ini. Ada kelas placeholder yang disebut GeneratedClasstempat Anda bisa menempelkan kode yang dihasilkan. Jika Anda kembali satu versi file, itu akan menghasilkan file excel seperti ini:
Saya belum mencoba solusi Open XML SDK ini tetapi Wow, saya pasti akan memeriksanya. Saya telah bekerja dengan alat seperti ini selama bertahun-tahun dan tidak tahu tentang ini. Saya telah menerbitkan FOSS sederhana saya sendiri untuk mengonversi file ke XLSX dengan .NET: github.com/TonyGravagno/NebulaXConvert
TonyG
8
Beberapa otomatisasi Excel yang berguna di C #, Anda dapat temukan dari tautan berikut.
xls
atauxlsx
salah satunya). Ini bukan persyaratan bahwa ada program di komputer Anda yang dapat membacanya (katakanlah, biner).Jawaban:
Anda dapat menggunakan perpustakaan yang disebut ExcelLibrary. Ini adalah perpustakaan sumber terbuka gratis yang diposting di Google Code:
Perpustakaan Excel
Ini terlihat sebagai port dari PHP ExcelWriter yang Anda sebutkan di atas. Itu belum akan menulis ke format .xlsx baru, tetapi mereka sedang berusaha menambahkan fungsionalitas itu di.
Ini sangat sederhana, kecil dan mudah digunakan. Plus itu memiliki DataSetHelper yang memungkinkan Anda menggunakan DataSets dan DataTables untuk dengan mudah bekerja dengan data Excel.
ExcelLibrary tampaknya masih hanya berfungsi untuk format Excel yang lebih lama (file .xls), tetapi mungkin menambahkan dukungan di masa depan untuk format 2007/2010 yang lebih baru.
Anda juga dapat menggunakan EPPlus , yang hanya berfungsi untuk file format Excel 2007/2010 (file .xlsx). Ada juga NPOI yang berfungsi dengan baik.
Ada beberapa bug yang diketahui dengan masing-masing perpustakaan seperti yang tercantum dalam komentar. Secara keseluruhan, EPPlus tampaknya menjadi pilihan terbaik seiring berjalannya waktu. Tampaknya lebih aktif diperbarui dan didokumentasikan juga.
Selain itu, seperti yang dicatat oleh @ АртёмЦарионов di bawah, EPPlus memiliki dukungan untuk Pivot Tables dan ExcelLibrary mungkin memiliki beberapa dukungan ( masalah tabel Pivot di ExcelLibrary )
Berikut adalah beberapa tautan untuk referensi cepat:
ExcelLibrary - GNU Lesser GPL
EPPlus - GNU Lesser General Public License (LGPL)
NPOI - Lisensi Apache
Berikut beberapa contoh kode untuk ExcelLibrary:
Berikut adalah contoh mengambil data dari database dan membuat buku kerja dari itu. Perhatikan bahwa kode ExcelLibrary adalah baris tunggal di bagian bawah:
Membuat file Excel semudah itu. Anda juga dapat secara manual membuat file Excel, tetapi fungsionalitas di atas sangat mengesankan saya.
sumber
Jika Anda puas dengan format xlsx, coba proyek GitHub saya, EPPlus . Itu dimulai dengan sumber dari ExcelPackage, tetapi hari ini adalah penulisan ulang total. Ini mendukung rentang, penataan sel, bagan, bentuk, gambar, rentang bernama, AutoFilter dan banyak hal lainnya.
sumber
Dan bagaimana dengan menggunakan Open XML SDK 2.0 untuk Microsoft Office?
Beberapa manfaat:
Tautan:
sumber
Saya telah menggunakan dengan sukses proyek open source berikut:
ExcelPackage untuk format OOXML (Office 2007)
NPOI untuk format .XLS (Office 2003). NPOI 2.0 (Beta) juga mendukung XLSX.
Lihatlah posting blog saya:
Membuat lembar kerja Excel .XLS dan .XLSX di C #
NPOI dengan Tabel Excel dan Bagan dinamis
sumber
Anda dapat menggunakan OLEDB untuk membuat dan memanipulasi file Excel. Periksa ini: Membaca dan Menulis Excel menggunakan OLEDB .
Contoh umum:
EDIT - Beberapa lagi tautan:
sumber
Solusi komersial, SpreadsheetGear untuk .NET akan melakukannya.
Anda dapat melihat langsung sampel ASP.NET (C # dan VB) di sini dan unduh versi evaluasi di sini .
Penafian: Saya memiliki SpreadsheetGear LLC
sumber
Beberapa opsi yang saya gunakan:
Jika XLSX adalah suatu keharusan: ExcelPackage adalah awal yang baik tetapi mati ketika pengembang berhenti bekerja di atasnya. ExML mengambil dari sana dan menambahkan beberapa fitur. ExML bukan pilihan yang buruk, saya masih menggunakannya di beberapa situs web produksi.
Untuk semua proyek baru saya, saya menggunakan NPOI , .NET port dari Apache POI . NPOI 2.0 (Alpha) juga mendukung XLSX.
sumber
Opsi yang sangat ringan mungkin menggunakan tabel HTML. Cukup buat tag kepala, badan, dan tabel dalam file, dan simpan sebagai file dengan ekstensi .xls. Ada atribut khusus Microsoft yang dapat Anda gunakan untuk mendesain output, termasuk formula.
Saya menyadari bahwa Anda mungkin tidak mengkodekan ini dalam aplikasi web, tetapi di sini adalah contoh komposisi file Excel melalui tabel HTML. Teknik ini dapat digunakan jika Anda membuat kode aplikasi konsol, aplikasi desktop, atau layanan.
sumber
Jika Anda membuat file Excel 2007/2010, cobalah proyek sumber terbuka ini: https://github.com/closedxml/closedxml
sumber
Anda bisa menggunakan ExcelXmlWriter .
Ini bekerja dengan baik.
sumber
Anda sebenarnya mungkin ingin memeriksa kelas interop yang tersedia dalam C # (mis
Microsoft.Office.Interop.Excel
. Anda mengatakan tidak OLE (yang ini bukan), tetapi kelas interop sangat mudah digunakan. Lihat Dokumentasi C # di sini (Interop untuk Excel dimulai pada halaman 1072 dari C # PDF).Anda mungkin terkesan jika Anda belum mencobanya.
Harap diingatkan sikap Microsoft tentang hal ini:
sumber
Berikut adalah perpustakaan C # yang sepenuhnya gratis, yang memungkinkan Anda mengekspor dari
DataSet
,DataTable
atauList<>
ke file Excel 2007 .xlsx asli, menggunakan pustaka OpenXML:http://mikesknowledledgebase.com/pages/CSharp/ExportToExcel.htm
Kode sumber lengkap disediakan - gratis - bersama dengan instruksi, dan aplikasi demo.
Setelah menambahkan kelas ini ke aplikasi Anda, Anda dapat mengekspor DataSet Anda ke Excel hanya dalam satu baris kode:
Itu tidak menjadi jauh lebih sederhana dari itu ...
Dan itu bahkan tidak memerlukan Excel untuk hadir di server Anda.
sumber
Anda dapat mempertimbangkan membuat file menggunakan format XML Spreadsheet 2003 . Ini adalah format XML sederhana menggunakan skema yang terdokumentasi dengan baik .
sumber
Anda mungkin ingin melihat GemBox . Spreadsheet .
Mereka memiliki versi gratis dengan semua fitur tetapi dibatasi hingga 150 baris per lembar dan 5 lembar per buku kerja, jika itu sesuai dengan kebutuhan Anda.
Saya belum perlu menggunakannya sendiri, tetapi memang terlihat menarik.
sumber
Syncfusion Essential XlsIO dapat melakukan ini. Tidak memiliki ketergantungan pada Microsoft office dan juga memiliki dukungan khusus untuk platform yang berbeda.
Contoh kode:
Seluruh rangkaian kontrol tersedia secara gratis melalui program lisensi komunitas jika Anda memenuhi syarat (pendapatan kurang dari 1 juta USD). Catatan: Saya bekerja untuk Syncfusion.
sumber
Baik,
Anda juga dapat menggunakan perpustakaan pihak ketiga seperti Aspose .
Pustaka ini memiliki manfaat bahwa itu tidak memerlukan Excel untuk diinstal pada mesin Anda yang akan ideal dalam kasus Anda.
sumber
OpenXML juga merupakan alternatif yang baik yang membantu menghindari menginstal MS Excel di Server. Open XML SDK 2.0 yang disediakan oleh Microsoft menyederhanakan tugas memanipulasi paket Open XML dan elemen skema Open XML yang mendasarinya dalam sebuah paket. Open XML Application Programming Interface (API) merangkum banyak tugas umum yang dilakukan pengembang pada paket Open XML.
Lihat ini OpenXML: Alternatif yang membantu menghindari menginstal MS Excel di Server
sumber
Berbagai pustaka Office 2003 XML yang tersedia tersedia dengan cukup baik untuk file excel yang lebih kecil. Namun, saya menemukan ukuran tipis dari buku kerja besar yang disimpan dalam format XML menjadi masalah. Misalnya, buku kerja tempat saya bekerja dengan ukuran 40 MB dalam format XLSX yang baru (dan tentunya lebih padat) menjadi file XML 360MB.
Sejauh penelitian saya telah mengambil saya, ada dua paket komersial yang memungkinkan output ke format file biner yang lebih lama. Mereka:
Tidak ada yang murah (masing-masing 500USD dan 800USD, saya pikir). tetapi keduanya bekerja independen dari Excel itu sendiri.
Apa yang saya ingin tahu tentang adalah modul output Excel untuk orang-orang seperti OpenOffice.org. Saya ingin tahu apakah mereka dapat diangkut dari Jawa ke .Net.
sumber
Saya setuju tentang membuat XML Spreadsheets, berikut adalah contoh tentang bagaimana melakukannya untuk C # 3 (semua orang hanya blog tentang hal itu di VB 9: P) http://www.aaron-powell.com/linq-to-xml-to- unggul
sumber
Saya baru saja digunakan FlexCel.NET dan menemukannya sebagai pustaka yang sangat baik! Saya tidak mengatakan itu tentang terlalu banyak produk perangkat lunak. Tidak ada gunanya memberikan seluruh penjualan di sini, Anda dapat membaca semua fitur di situs web mereka.
Ini adalah produk komersial, tetapi Anda mendapatkan sumber lengkap jika Anda membelinya. Jadi saya kira Anda bisa mengkompilasinya ke dalam perakitan Anda jika Anda benar-benar menginginkannya. Kalau tidak, itu hanya satu rakitan tambahan untuk xcopy - tidak ada konfigurasi atau instalasi atau semacamnya.
Saya tidak berpikir Anda akan menemukan cara untuk melakukan ini tanpa perpustakaan pihak ketiga sebagai .NET framework, jelas, tidak dibangun untuk mendukungnya dan OLE Automation hanya seluruh dunia yang menyakitkan.
sumber
Saya telah menulis kode sederhana untuk mengekspor dataset ke excel tanpa menggunakan objek excel dengan menggunakan System.IO.StreamWriter.
Di bawah ini adalah kode yang akan membaca semua tabel dari dataset dan menuliskannya ke lembar satu per satu. Saya mengambil bantuan dari artikel ini .
sumber
Hanya ingin menambahkan referensi lain ke solusi pihak ketiga yang secara langsung mengatasi masalah Anda: http://www.officewriter.com
(Penafian: Saya bekerja untuk SoftArtisans, perusahaan yang membuat OfficeWriter)
sumber
IKVM + POI
Atau, Anda dapat menggunakan Interop ...
sumber
Berikut cara untuk melakukannya dengan LINQ ke XML, lengkap dengan kode sampel:
Impor dan Ekspor Data Excel dengan cepat dengan LINQ ke XML
Agak rumit, karena Anda harus mengimpor ruang nama dan lain-lain, tetapi itu memungkinkan Anda menghindari ketergantungan eksternal.
(Juga, tentu saja, itu VB. NET, bukan C #, tetapi Anda selalu dapat mengisolasi VB. NET dalam proyek sendiri untuk menggunakan XML Literals, dan melakukan segala sesuatu yang lain dalam C #.)
sumber
Beberapa vendor komponen pihak ketiga seperti Infragistics atau Syncfusion menyediakan kemampuan ekspor Excel yang sangat baik yang tidak memerlukan Microsoft Excel untuk diinstal.
Karena vendor ini juga menyediakan komponen kisi UI canggih, komponen ini sangat berguna jika Anda ingin gaya dan tata letak ekspor excel untuk meniru kondisi kisi saat ini dalam antarmuka pengguna aplikasi Anda.
Jika ekspor Anda dimaksudkan untuk dieksekusi di sisi server dengan penekanan pada data yang akan diekspor dan tanpa tautan ke UI, maka saya akan memilih salah satu opsi open source gratis (mis. ExcelLibrary).
Saya sebelumnya telah terlibat dengan proyek-proyek yang berusaha menggunakan otomatisasi sisi server pada suite Microsoft Office. Berdasarkan pengalaman ini saya akan sangat merekomendasikan terhadap pendekatan itu.
sumber
Hai solusi ini adalah untuk mengekspor tampilan grid Anda ke file excel Anda mungkin dapat membantu Anda
sumber
Anda dapat membuat file Excel yang diformat dengan baik menggunakan perpustakaan ini: http://officehelper.codeplex.com/documentation
Lihat contoh di bawah ini:
tempat sampel terlihat seperti ini:
sumber
Cara termudah dan tercepat untuk membuat file Excel dari C # adalah dengan menggunakan Alat Produktivitas Open XML. Open XML Productivity Tool hadir dengan instalasi Open XML SDK. Alat ini membalikkan semua file Excel menjadi kode C #. Kode C # kemudian dapat digunakan untuk menghasilkan kembali file itu.
Gambaran umum proses yang terlibat adalah:
DesiredLook.xlsx
.DesiredLook.xlsx
dan klik tombol Reflect Code di dekat bagian atas.Sebagai bonus, metode ini berfungsi untuk semua file Word dan PowerPoint. Sebagai pengembang C #, Anda kemudian akan membuat perubahan pada kode yang sesuai dengan kebutuhan Anda.
Saya telah mengembangkan aplikasi WPF sederhana di github yang akan berjalan di Windows untuk tujuan ini. Ada kelas placeholder yang disebut
GeneratedClass
tempat Anda bisa menempelkan kode yang dihasilkan. Jika Anda kembali satu versi file, itu akan menghasilkan file excel seperti ini:sumber
Beberapa otomatisasi Excel yang berguna di C #, Anda dapat temukan dari tautan berikut.
http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm
bolton.
sumber
Lihatlah contoh cara membuat file Excel.
Ada beberapa contoh di C # dan VB.NET
Ini mengelola file XSL XSLX dan CSV Excel.
sumber