Saya akan menambahkan bagian ke aplikasi ASP.NET (codebehind VB.NET) yang memungkinkan pengguna mendapatkan data yang dikembalikan kepada mereka sebagai file Excel, yang akan saya buat berdasarkan data database. Meskipun ada beberapa cara untuk melakukan ini, masing-masing memiliki kekurangannya sendiri. Bagaimana Anda mengembalikan data? Saya mencari sesuatu yang sebersih dan semudah mungkin.
asp.net
vb.net
export-to-excel
Dan Coates
sumber
sumber
Jawaban:
CSV
Kelebihan:
Kekurangan:
HTML
Kelebihan:
Kekurangan:
OpenXML (Office 2007 .XLSX)
Kelebihan:
Kekurangan:
SpreadSheetML (XML format terbuka)
Kelebihan:
Kekurangan:
XLS (dibuat oleh komponen pihak ketiga)
Kelebihan:
Kekurangan:
COM Interop
Kelebihan:
Kekurangan:
sumber
Anda dapat mengeluarkan data sebagai sel tabel html, menempelkan
.xls
atau.xlsx
ekstensi di atasnya, dan Excel akan membukanya seolah-olah itu adalah dokumen asli. Anda bahkan dapat melakukan beberapa pemformatan terbatas dan penghitungan rumus dengan cara ini, jadi ini jauh lebih hebat daripada CSV. Selain itu, mengeluarkan tabel html seharusnya cukup mudah dilakukan dari platform web seperti ASP.Net;)Jika Anda memerlukan beberapa lembar kerja atau lembar kerja bernama dalam Buku Kerja Excel Anda, Anda bisa melakukan sesuatu yang serupa melalui skema XML yang disebut
SpreadSheetML
. Ini bukan format baru yang disertakan dengan Office 2007, tetapi sesuatu yang sama sekali berbeda yang berfungsi sejauh Excel 2000. Cara termudah untuk menjelaskan cara kerjanya adalah dengan sebuah contoh:sumber
Jika berasal dari DataTable :
Dari Gridview :
sumber
Ini adalah pembungkus gratis untuk SpreadML - berfungsi dengan baik.
http://www.carlosag.net/Tools/ExcelXmlWriter/
sumber
Berdasarkan jawaban yang diberikan, dan konsultasi dengan rekan kerja, tampaknya solusi terbaik adalah menghasilkan file XML atau tabel HTML dan mendorongnya ke bawah sebagai lampiran. Satu perubahan yang direkomendasikan oleh rekan kerja saya adalah bahwa data (yaitu tabel HTML) dapat ditulis langsung ke objek Respon, sehingga menghilangkan kebutuhan untuk menulis file, yang dapat merepotkan karena masalah perizinan, I / O pertentangan, dan memastikan bahwa pembersihan terjadwal terjadi.
Ini potongan kodenya ... Saya belum memeriksa ini, dan saya belum memberikan semua kode yang dipanggil, tapi saya pikir itu mewakili ide dengan baik.
sumber
karena Excel memahami HTML, Anda cukup menulis data sebagai tabel HTML ke file temp dengan ekstensi .xls, dapatkan FileInfo untuk file tersebut, dan hancurkan kembali menggunakan
jika Anda ingin menghindari file temp, Anda dapat menulis ke aliran dalam memori dan menulis kembali byte daripada menggunakan WriteFile
jika header panjang konten dihilangkan, Anda dapat langsung menulis html kembali, tetapi ini mungkin tidak berfungsi dengan benar sepanjang waktu di semua browser
sumber
Saya pribadi lebih suka metode XML. Saya akan mengembalikan data dari database dalam Dataset, menyimpannya ke XMl, lalu saya membuat file xslt yang berisi aturan transformasi yang akan memformat dokumen yang tepat, dan transformasi XML sederhana akan menyelesaikan pekerjaan. Bagian terbaik dari hal ini, Anda dapat memformat sel, melakukan pemformatan bersyarat, mengatur header dan footer, dan bahkan mengatur rentang cetak.
sumber
Saya telah melakukan ini beberapa kali dan setiap kali cara termudah adalah dengan mengembalikan file CSV (Comma Separated Value). Excel mengimpornya dengan sempurna, dan relatif cepat untuk dilakukan.
sumber
kami mengekspor data dari datagrid ke excel setiap saat. Mengonversinya ke HTML lalu menulis ke file excel
Satu-satunya gotcha dengan metode ini adalah banyak kisi kami memiliki tombol atau tautan di dalamnya sehingga Anda memerlukan ini juga:
Saya menemukan bahwa di suatu tempat, itu bekerja dengan baik.
sumber
Saya merekomendasikan perpustakaan generasi excel opensource gratis yang didasarkan pada OpenXML
Itu membantu saya beberapa bulan lalu.
sumber
Berikut adalah laporan yang diambil dari prosedur tersimpan. Hasilnya diekspor ke Excel. Ini menggunakan ADO bukan ADO.NET dan alasan mengapa baris ini
Itu melakukan sebagian besar pekerjaan dan tidak tersedia di ado.net.
sumber
Jika Anda mengisi GridView dengan data, Anda dapat menggunakan fungsi ini untuk mendapatkan data berformat HTML, tetapi menunjukkan pada browser bahwa ini adalah file excel.
sumber
Hindari saja COM Interop melalui namespace Microsoft.Office.Interop. Ini sangat lambat dan tidak dapat diandalkan dan tidak dapat diukur. Tidak berlaku untuk masokis.
sumber
Anda dapat membuat file Excel yang diformat dengan baik menggunakan pustaka ini, cukup mudah: http://officehelper.codeplex.com/documentation .
Microsoft Office tidak perlu diinstal di server web!
sumber
CSV adalah cara termudah. Sebagian besar waktu ini ditautkan ke Excel. Jika tidak, Anda harus menggunakan API otomatisasi atau format XML. API dan XML tidak terlalu sulit untuk digunakan.
Informasi tentang membuat XML untuk Excel
sumber
Saya menggunakan rute CSV (seperti dijelaskan di atas), atau lebih sering hari ini, saya menggunakan Infragistics NetAdvantage untuk menghasilkan file. (Sebagian besar waktu di mana Infragistics sedang dimainkan, kami hanya mengekspor UltraWebGrid yang ada, yang pada dasarnya adalah solusi satu-LOC kecuali diperlukan penyesuaian pemformatan tambahan. Kami juga dapat membuat file Excel / BIFF secara manual, tetapi jarang ada kebutuhan untuk itu.)
sumber
man, di. bersih saya rasa Anda bisa memiliki komponen yang bisa melakukan itu, tetapi di asp klasik saya telah melakukannya membuat tabel html dan mengubah tipe mime halaman ke vnd / msexcel. Saya kira jika Anda menggunakan gridview dan mengubah jenis mime mungkin itu harus berfungsi, karena gridview adalah tabel html.
sumber
Satu-satunya cara antipeluru untuk menghindari segitiga hijau "Sepertinya angka-angka ini disimpan sebagai teks" adalah dengan menggunakan format Open XML. Layak digunakan, hanya untuk menghindari segitiga hijau yang tak terhindarkan.
sumber
Metode terbaik yang pernah saya lihat untuk laporan excel adalah menulis data dalam XML dengan ekstensi XML dan mengalirkannya ke klien dengan tipe konten yang benar. (aplikasi / xls)
Ini berfungsi untuk laporan apa pun yang memerlukan pemformatan dasar, dan memungkinkan Anda membandingkan dengan spreadsheet yang ada dengan menggunakan alat perbandingan teks.
sumber
Dengan asumsi ini untuk intranet, di mana Anda dapat mengatur izin dan mengamanatkan IE, Anda dapat membuat sisi klien buku kerja dengan JScript / VBScript yang menjalankan Excel . Ini memberi Anda pemformatan Excel asli, tanpa perlu repot mencoba mengotomatiskan Excel di server.
Saya tidak yakin saya benar-benar akan merekomendasikan pendekatan ini lagi kecuali dalam skenario yang cukup khusus, tetapi itu cukup umum selama masa kejayaan ASP klasik.
sumber
Anda tentu saja selalu dapat menggunakan komponen pihak ketiga. Secara pribadi, saya memiliki pengalaman yang baik dengan Spire.XLS http://www.e-iceblue.com/xls/xlsintro.htm
Komponen ini cukup mudah digunakan dalam aplikasi Anda:
sumber
Salah satu masalah yang saya temui menggunakan salah satu solusi yang disarankan di atas yang mirip dengan jawaban ini adalah jika Anda mendorong konten keluar sebagai lampiran (apa yang saya temukan sebagai solusi terbersih untuk browser non-ms) , lalu buka di Excel 2000-2003, jenisnya adalah "Halaman Web Excel" dan bukan dokumen Excel asli.
Kemudian Anda harus menjelaskan kepada pengguna bagaimana menggunakan "Simpan sebagai tipe" dari dalam Excel untuk mengubahnya menjadi dokumen Excel. Ini merepotkan jika pengguna perlu mengedit dokumen ini dan kemudian mengunggahnya kembali ke situs Anda.
Rekomendasi saya adalah menggunakan CSV. Ini sederhana dan jika pengguna membukanya dari dalam Excel, Excel setidaknya meminta mereka untuk menyimpannya dalam format aslinya.
sumber
Saya hanya akan membuat file CSV berdasarkan data, karena saya melihatnya sebagai yang terbersih, dan Excel memiliki dukungan yang baik untuk itu. Tetapi jika Anda memerlukan format yang lebih fleksibel, saya yakin ada beberapa alat pihak ke-3 untuk menghasilkan file excel yang sebenarnya.
sumber
Berikut adalah solusi untuk mengalirkan data keluar sebagai CSV. Cepat, bersih, dan mudah, dan menangani koma pada masukan.
sumber
baru saja membuat fungsi untuk mengekspor dari formulir web C # untuk unggul semoga membantu orang lain
sumber
Jika Anda harus menggunakan Excel dan bukan file CSV, Anda harus menggunakan otomatisasi OLE pada contoh Excel di server. Cara termudah untuk melakukannya adalah dengan memiliki file template dan secara terprogram mengisinya dengan data. Anda menyimpannya ke file lain.
Tips:
Beberapa pendekatan 'gunakan mime-types untuk mengelabui excel ke dalam membuka tabel HTML' akan berfungsi jika Anda tidak keberatan dengan format file yang agak mendasar. Pendekatan ini juga mengalihkan pekerjaan berat CPU ke klien. Jika Anda ingin mengontrol format spreadsheet, Anda mungkin harus menggunakan Excel itu sendiri untuk menghasilkan file seperti dijelaskan di atas.
sumber