Pertanyaan Buat file Excel (.XLS dan .XLSX) dari C #


Bagaimana saya bisa membuat Spreadsheet Excel dengan C # tanpa mengharuskan Excel untuk diinstal pada mesin yang menjalankan kode?


1566


asal


Jawaban:


Anda dapat menggunakan pustaka yang disebut ExcelLibrary. Ini adalah pustaka sumber terbuka dan gratis yang diposkan di Google Code:

ExcelLibrary

Ini terlihat sebagai port dari PHP ExcelWriter yang Anda sebutkan di atas. Itu tidak akan menulis ke format .xlsx yang baru, tetapi mereka sedang bekerja untuk menambahkan fungsionalitas itu.

Ini sangat sederhana, kecil dan mudah digunakan. Plus ini memiliki DataSetHelper yang memungkinkan Anda menggunakan DataSets dan DataTable untuk bekerja dengan mudah dengan data Excel.

ExcelLibrary tampaknya masih hanya bekerja untuk format Excel yang lebih lama (file .xls), tetapi mungkin menambahkan dukungan di masa depan untuk format 2007/2010 yang lebih baru.

Anda juga bisa menggunakan EPPlus, yang hanya berfungsi untuk file format Excel 2007/2010 (file .xlsx).

Ada beberapa bug yang diketahui dengan masing-masing perpustakaan seperti yang tercantum dalam komentar. Secara keseluruhan, EPPlus tampaknya menjadi pilihan terbaik seiring waktu. Tampaknya lebih aktif diperbarui dan didokumentasikan juga.

Juga, sebagaimana dicatat oleh @ АртёмЦарионов di bawah, EPPlus memiliki dukungan untuk Pivot Tables dan ExcelLibrary mungkin memiliki beberapa dukungan (Masalah tabel pivot di ExcelLibrary)

Berikut ini beberapa tautan untuk referensi cepat:
ExcelLibrary - GNU Lesser GPL
EPPlus - Lisensi Publik Umum GNU GNU (LGPL)

Berikut beberapa contoh kode untuk ExcelLibrary:

Berikut ini contoh mengambil data dari database dan membuat buku kerja dari itu. Perhatikan bahwa kode ExcelLibrary adalah satu baris di bagian bawah:

//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("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 = new OleDbConnection(dbConnectionString);
con.Open();

//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();

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 set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);

Membuat file Excel semudah itu. Anda juga dapat secara manual membuat file Excel, tetapi fungsi di atas adalah apa yang benar-benar membuat saya terkesan.


874



Jika Anda senang dengan format xlsx, cobalah codeplex Proyek GitHub. EPPlus. Memulai dengan sumber dari ExcelPackage, tetapi hari ini adalah penulisan ulang total. Mendukung rentang, penataan sel, bagan, bentuk, gambar, pengaturan nama, autofilter, dan banyak hal lainnya.


490



Saya telah menggunakan dengan sukses proyek sumber terbuka berikut:

  • ExcelPackage untuk format OOXML (Office 2007)

  • NPOI untuk format .XLS (Office 2003). NPOI 2.0 (Alpha) juga mendukung XLSX.

Lihatlah posting blog saya:

Membuat spreadsheet Excel .XLS dan .XLSX di C #

NPOI dengan Tabel Excel dan Bagan dinamis


146



Dan bagaimana dengan menggunakan Open XML SDK 2.0 untuk Microsoft Office?

Beberapa manfaat:

  • Tidak perlu menginstal Office
  • Dibuat oleh Microsoft = dokumentasi MSDN yang layak
  • Hanya satu. Net dll untuk digunakan dalam proyek
  • SDK dilengkapi dengan banyak alat seperti diff, validator, dll

Tautan:


140



Anda dapat menggunakan OLEDB untuk membuat dan memanipulasi file Excel. Periksa ini: Membaca dan Menulis Excel menggunakan OLEDB.

Contoh umum:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
  conn.Open();
  OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
  cmd.ExecuteNonQuery();
}

EDIT - Beberapa tautan lagi:


94



Solusi komersial, SpreadsheetGear for .NET akan melakukannya.

Anda dapat melihat sampel ASP.NET (C # dan VB) langsung sini dan unduh versi evaluasi sini.

Disclaimer: Saya memiliki SpreadsheetGear LLC


72



Beberapa opsi yang saya gunakan:

Jika XLSX adalah suatu keharusan: ExcelPackage adalah awal yang baik tetapi mati ketika pengembang berhenti mengerjakannya. 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.


55



Opsi yang sangat ringan mungkin menggunakan tabel HTML. Cukup buat tag head, body, dan table dalam file, dan simpan sebagai file dengan ekstensi .xls. Ada atribut khusus Microsoft yang dapat Anda gunakan untuk memberi style pada output, termasuk rumus.

Saya menyadari bahwa Anda mungkin tidak mengkodekan ini dalam aplikasi web, tetapi ini adalah sebuah contoh komposisi file Excel melalui tabel HTML. Teknik ini dapat digunakan jika Anda mengkodekan aplikasi konsol, aplikasi desktop, atau layanan.


53