Saya mencari kelas untuk membuat file CSV Excel.
Fitur yang diharapkan:
- Sangat mudah digunakan
- Mengosongkan koma dan mengutip jadi excel menanganinya dengan baik
- Tanggal dan data ekspor dalam format zona waktu-bukti
Apakah Anda tahu ada kelas yang mampu melakukan ini?
Jawaban:
Versi yang sedikit berbeda saya tulis menggunakan refleksi untuk kebutuhan saya. Saya harus mengekspor daftar objek ke csv. Jika seseorang ingin menggunakannya untuk masa depan.
Contoh penggunaan: (diperbarui per komentar)
sumber
public string Export()
metode dan mengubah metode lain kepublic string Export(bool includeHeaderLiner = true)
(dengan nilai parameter default). Sekali lagi, saya tidak yakin apakah parameter default tersedia pada 2011, tetapi kode saat ini hanya terlihat seperti biasa bagi saya.Tolong maafkan saya
Tapi saya pikir repositori open-source publik adalah cara yang lebih baik untuk berbagi kode dan memberikan kontribusi, dan koreksi, dan tambahan seperti "Saya memperbaiki ini, saya memperbaikinya"
Jadi saya membuat repositori git sederhana dari kode topik-pemula dan semua tambahan:
https://github.com/jitbit/CsvExport
Saya juga menambahkan beberapa perbaikan yang berguna. Semua orang dapat menambahkan saran, garpu untuk berkontribusi dll. Dll. Kirim saya garpu Anda jadi saya menggabungkan mereka kembali ke repo.
PS. Saya memposting semua pemberitahuan hak cipta untuk Chris. @ Chris jika Anda menentang ide ini - beri tahu saya, saya akan membunuhnya.
sumber
Solusi lain yang baik untuk membaca dan menulis file CSV adalah filehelpers (open source).
sumber
Bagaimana kalau menggunakan string.Bergabung dengan semua loop foreach?
sumber
String.Join("," , List<string>)
bekerja juga.Jika ada yang ingin saya mengonversikan ini ke metode ekstensi di IEnumerable:
sumber
kerja bagus di kelas ini. Sederhana dan mudah digunakan. Saya memodifikasi kelas untuk memasukkan judul di baris pertama ekspor; pikir saya akan berbagi:
menggunakan:
kelas:
sumber
ada perpustakaan open-source untuk CSV yang bisa Anda peroleh menggunakan nuget: http://joshclose.github.io/CsvHelper/
sumber
Saya menambahkan ExportToStream sehingga csv tidak harus menyimpan ke hard drive terlebih dahulu.
sumber
aku sudah menambahkan
Kode sebelumnya tidak berfungsi dengan versi .NET lama. Untuk versi 3.5 framework gunakan versi lain ini:
sumber
Terima kasih banyak untuk itu! Saya memodifikasi kelas menjadi:
MakeValueCsvFriendly
Kode:
sumber
Anda juga dapat menggunakan ADO untuk melakukan ini: http://weblogs.asp.net/fmarguerie/archive/2003/10/01/29964.aspx
sumber
Kelas asli memiliki masalah, dan itu adalah jika Anda ingin menambahkan kolom baru, Anda akan menerima KeyNotFoundException pada metode Ekspor. Sebagai contoh:
Untuk mengatasi ini, dan menggunakan ide @KeyboardCowboy menggunakan refleksi, saya memodifikasi kode untuk memungkinkan menambahkan baris yang tidak memiliki kolom yang sama. Anda dapat menggunakan instance dari kelas anonim. Sebagai contoh:
Anda dapat mengunduh kode sumber di sini CsvExporter . Jangan ragu untuk menggunakan dan memodifikasi.
Sekarang, jika semua baris yang ingin Anda tulis adalah dari kelas yang sama, saya membuat kelas generik CsvWriter.cs , yang memiliki penggunaan RAM kinerja yang lebih baik dan ideal untuk menulis file besar. Ditambah itu memungkinkan Anda menambahkan pemformat ke tipe data yang Anda inginkan . Contoh penggunaan:
sumber
Anda hanya perlu 1 fungsi untuk melakukan ini. Yang harus Anda lakukan adalah membuat folder di explorer solusi Anda dan menyimpan file csv di sana lalu mengekspor file itu ke pengguna.
Seperti dalam kasus saya, saya memiliki folder yang diunduh. Pertama saya mengekspor semua konten saya ke direktori itu dan kemudian mengekspornya ke pengguna. Untuk penanganan response.end, saya menggunakan ThreadAbortException. Jadi ini adalah 100% fungsi asli dan berfungsi dalam solusi saya.
sumber