Saya baru mengenal Python. Saya perlu menulis beberapa data dari program saya ke spreadsheet. Saya telah mencari secara online dan sepertinya ada banyak paket yang tersedia (xlwt, XlsXcessive, openpyxl). Yang lain menyarankan untuk menulis ke file .csv (tidak pernah menggunakan CSV dan tidak benar-benar mengerti apa itu).
Programnya sangat sederhana. Saya punya dua daftar (float) dan tiga variabel (string). Saya tidak tahu panjang kedua daftar dan mungkin panjangnya tidak sama.
Saya ingin tata letak seperti pada gambar di bawah ini:
Kolom merah muda akan memiliki nilai daftar pertama dan kolom hijau akan memiliki nilai daftar kedua.
Jadi apa cara terbaik untuk melakukan ini?
PS Saya menjalankan Windows 7 tetapi saya tidak perlu menginstal Office pada komputer yang menjalankan program ini.
import xlwt
x=1
y=2
z=3
list1=[2.34,4.346,4.234]
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
sheet1.write(0, 0, "Display")
sheet1.write(1, 0, "Dominance")
sheet1.write(2, 0, "Test")
sheet1.write(0, 1, x)
sheet1.write(1, 1, y)
sheet1.write(2, 1, z)
sheet1.write(4, 0, "Stimulus Time")
sheet1.write(4, 1, "Reaction Time")
i=4
for n in list1:
i = i+1
sheet1.write(i, 0, n)
book.save("trial.xls")
Saya menulis ini menggunakan semua saran Anda. Ini menyelesaikan pekerjaan tetapi bisa sedikit ditingkatkan.
Bagaimana cara memformat sel yang dibuat dalam for for (nilai list1) sebagai ilmiah atau angka?
Saya tidak ingin memotong nilai. Nilai aktual yang digunakan dalam program akan memiliki sekitar 10 digit setelah desimal.
Jawaban:
untuk penjelasan lebih lanjut: https://github.com/python-excel
sumber
xlwt
hanya untuk menulis.xls
file lama untuk Excel 2003 atau sebelumnya. Ini mungkin sudah usang (tergantung kebutuhan Anda).Gunakan DataFrame.to_excel dari panda . Panda memungkinkan Anda untuk merepresentasikan data Anda dalam struktur data yang kaya fungsional dan akan membiarkan Anda membaca file excel juga.
Pertama-tama Anda harus mengubah data Anda menjadi DataFrame dan kemudian menyimpannya ke file excel seperti:
dan file excel yang keluar terlihat seperti ini:
Perhatikan bahwa kedua daftar harus memiliki panjang yang sama dengan yang lain, panda akan mengeluh. Untuk mengatasi ini, ganti semua nilai yang hilang dengan
None
.sumber
xlwt
juga, tetapi mendapatkanopenpyxl
kesalahan. Untuk siapa pun yang bingung dengan ini - itu semua dalam tipe file yang Anda inginkan. Para panda (0,12) dokumen mengatakan "File dengan.xls
ekstensi akan ditulis menggunakan xlwt dan file dengan.xlsx
ekstensi akan ditulis menggunakan openpyxl".xlrd / xlwt (standar): Python tidak memiliki fungsi ini di perpustakaan standarnya, tapi saya pikir xlrd / xlwt sebagai cara "standar" untuk membaca dan menulis file excel. Cukup mudah untuk membuat buku kerja, menambahkan lembar, menulis data / formula, dan memformat sel. Jika Anda membutuhkan semua hal ini, Anda mungkin paling sukses dengan perpustakaan ini. Saya pikir Anda bisa memilih openpyxl sebagai gantinya dan itu akan sangat mirip, tapi saya belum menggunakannya.
Untuk memformat sel dengan xlwt, tentukan a
XFStyle
dan sertakan gaya saat Anda menulis ke selembar. Ini adalah contoh dengan banyak format angka . Lihat contoh kode di bawah ini.Tablib (kuat, intuitif): Tablib adalah perpustakaan yang lebih kuat namun intuitif untuk bekerja dengan data tabular. Itu dapat menulis buku kerja excel dengan banyak lembar serta format lain, seperti csv, json, dan yaml. Jika Anda tidak membutuhkan sel yang diformat (seperti warna latar belakang), Anda sebaiknya menggunakan pustaka ini, yang akan membuat Anda lebih jauh dalam jangka panjang.
csv (mudah): File di komputer Anda berupa teks atau biner . File teks hanyalah karakter, termasuk yang khusus seperti baris baru dan tab, dan dapat dengan mudah dibuka di mana saja (mis. Notepad, browser web Anda, atau produk Office). File csv adalah file teks yang diformat dengan cara tertentu: setiap baris adalah daftar nilai, dipisahkan dengan koma. Program python dapat dengan mudah membaca dan menulis teks, jadi file csv adalah cara termudah dan tercepat untuk mengekspor data dari program python Anda ke excel (atau program python lain).
File Excel adalah biner dan memerlukan pustaka khusus yang mengetahui format file, itulah sebabnya Anda memerlukan pustaka tambahan untuk python, atau program khusus seperti Microsoft Excel, Gnumeric, atau LibreOffice, untuk membaca / menulisnya.
sumber
Saya mensurvei beberapa modul Excel untuk Python, dan menemukan openpyxl menjadi yang terbaik.
Buku gratis Automate the Boring Stuff with Python memiliki bab tentang openpyxl dengan lebih detail atau Anda dapat memeriksa situs Baca the Documents . Anda tidak perlu menginstal Office atau Excel untuk menggunakan openpyxl.
Program Anda akan terlihat seperti ini:
sumber
CSV adalah singkatan dari nilai yang dipisahkan koma. CSV seperti file teks dan dapat dibuat hanya dengan menambahkan ekstensi .CSV
misalnya menulis kode ini:
Anda dapat membuka file ini dengan excel.
sumber
é
atau中
, lebih baik Anda lakukanf.write('\xEF\xBB\xBF')
setelahopen()
. Itu adalah BOM ( tanda urutan byte , qv), yang dibutuhkan oleh perangkat lunak Microsoft untuk mengenali pengkodean UTF-8sumber
Coba lihat juga perpustakaan berikut:
xlwings - untuk mendapatkan data masuk dan keluar dari spreadsheet dari Python, serta memanipulasi buku kerja dan bagan
ExcelPython - add-in Excel untuk menulis fungsi yang ditentukan pengguna (UDF) dan makro dalam Python, bukan VBA
sumber
OpenPyxl
adalah pustaka yang cukup bagus, dibangun untuk membaca / menulis file Excel 2010 xlsx / xlsm:https://openpyxl.readthedocs.io/en/stable
Jawaban lainnya , merujuk padanya menggunakan fungsi deperciated (
get_sheet_by_name
). Ini adalah bagaimana melakukannya tanpa itu:sumber
FileNotFoundError: [Errno 2] No such file or directory: 'New.xlsx'
openpyxl.load_workbook
memuat buku kerja, yang sudah ada. Buat fileNew.xlsx
untuk menghindari kesalahan ini.The
xlsxwriter
perpustakaan besar untuk menciptakan.xlsx
file. Cuplikan berikut menghasilkan.xlsx
file dari daftar dicts sambil menyatakan urutan dan nama yang ditampilkan :sumber
Cara termudah untuk mengimpor angka pastinya adalah dengan menambahkan desimal setelah angka di
l1
danl2
. Python menginterpretasikan titik desimal ini sebagai instruksi dari Anda untuk memasukkan angka pastinya. Jika Anda perlu membatasi ke beberapa tempat desimal, Anda harus dapat membuat perintah cetak yang membatasi output, sesuatu yang sederhana seperti:Akan membatasi ke tempat desimal kesepuluh, dengan asumsi data Anda memiliki dua bilangan bulat tersisa dari desimal.
sumber
Anda dapat mencoba hfexcel pustaka berorientasi objek yang Ramah Manusia berdasarkan XlsxWriter :
sumber
Jika kebutuhan Anda adalah memodifikasi buku kerja yang ada, cara paling aman adalah dengan menggunakan pyoo . Anda perlu memiliki beberapa pustaka yang diinstal dan dibutuhkan beberapa rintangan untuk melompati tetapi begitu diatur, ini akan menjadi anti peluru karena Anda meningkatkan API LibreOffice / OpenOffice yang lebar dan solid.
Silakan lihat Gist saya tentang cara mengatur sistem linux dan melakukan beberapa pengkodean dasar menggunakan pyoo.
Berikut ini contoh kode:
sumber