Baru-baru ini, saya melakukan beberapa pekerjaan pemrosesan dan perhitungan data. Karena data disimpan dalam format .CSV, saya baru mulai memprosesnya secara langsung dengan Excel.
Tetapi melakukannya dan menemukan pekerjaan yang berulang sebenarnya tidak masuk akal, jadi saya berpikir untuk menulis alat kecil untuk membantu mengatasinya.
Saya kebetulan membaca di buku sebelumnya, menggunakan Python untuk memproses spreadsheet Excel, tetapi sayangnya saya tidak membacanya dengan cermat.
Jadi saya mencari informasi di mana-mana, pada dasarnya menyelesaikan kebutuhan sehari-hari, dan akhirnya menyelesaikan tugas, jadi menulis artikel ini adalah ringkasan, terutama untuk mencatat masalah dan solusi umum dalam proses penggunaan.
Python mengoperasikan Excel, terutama menggunakan dua pustaka, xlrd dan xlwt, yaitu xlrd adalah pustaka untuk membaca Excel, dan xlwt adalah pustaka untuk menulis Excel.
Ini dapat diunduh dari https://pypi.python.org/pypi. Catatan berikut masing-masing mencatat Python membaca dan menulis Excel.
- Python menulis Excel-xlwt
Kesulitan menulis Excel dengan Python bukanlah untuk membuat Workbook itu sendiri, tetapi untuk mengisi datanya, tetapi ini bukan cakupannya.
Dalam operasi penulisan Excel juga terdapat masalah yang pelik, misalnya menulis ke sel gabungan lebih merepotkan. Selain itu, ada gaya penulisan yang berbeda.
Kode detailnya adalah sebagai berikut:
impor xlwt #Set gaya tabel def set_style (nama, tinggi, tebal = Salah): style = xlwt.XFStyle () font = xlwt.Font () font.name = nama font.bold = tebal font.color_index = 4 font.height = tinggi style.font = font gaya kembali #Tulis Excel def write_excel (): f = xlwt. Buku Kerja () sheet1 = f.add_sheet ('pelajar', cell_overwrite_ok = True) baris0 = colum0 = #Tulis baris pertama untuk i dalam rentang (0, len (row0)): sheet1.write (0, i, row0 , set_style ('Times New Roman', 220, True)) #Tulis kolom pertama untuk i dalam rentang (0, len (colum0)): sheet1.write (i + 1,0, colum0 , set_style ('Times New Roman', 220, True)) sheet1.write (1,3, '2006/12/12') sheet1.write_merge (6,6,1,3, 'tidak diketahui') # Gabungkan sel baris sheet1.write_merge (1,2,3,3, ' ') #Gabungkan sel kolom sheet1.write_merge (4,5,3,3, 'play basketball') f.save ('test.xls') jika __name__ == '__ main__': write_excel ()Grafik hasil:
Berikut penjelasan singkat penggunaan write_merge (), seperti di atas: sheet1.write_merge (1,2,3,3, 'playing a game'), yaitu menggabungkan kolom kedua dan ketiga dalam empat kolom, dan sel yang digabungkan Kontennya "total" dan gaya ditetapkan. Diantaranya, semua parameter di dalamnya dihitung dari 0.
- Python membaca Excel-xlrd
Python membaca tabel Excel. Dibandingkan dengan xlwt, xlrd menyediakan lebih banyak antarmuka, tetapi ada juga beberapa masalah yang merepotkan dalam prosesnya, seperti membaca tanggal dan membaca isi sel yang digabungkan.
Mari kita lihat operasi dasarnya:
(Data grafik)
Ide keseluruhannya adalah membuka file, memilih tabel, membaca konten baris dan kolom, dan membaca data di tabel
Kode detailnya adalah sebagai berikut:
impor xlrd dari tanggal impor datetime, datetime file = 'test3.xlsx' def read_excel (): wb = xlrd.open_workbook (nama file = file) #Buka file print (wb.sheet_names ()) # Dapatkan semua nama tabel sheet1 = wb.sheet_by_index (0) #Dapatkan tabel berdasarkan indeks sheet2 = wb.sheet_by_name ('grade') # Dapatkan formulir berdasarkan nama cetak (sheet1, sheet2) cetak (sheet1.name, sheet1.nrows, sheet1.ncols) baris = sheet1.row_values (2) #Dapatkan konten baris cols = sheet1.col_values (3) #Dapatkan konten kolom cetak (baris) cetak (cols) print (sheet1.cell (1,0) .value) # Dapatkan konten dalam tabel, tiga cara cetak (sheet1.cell_value (1,0)) cetak (sheet1.row (1) .value)Hasilnya adalah sebagai berikut:
Maka masalahnya adalah, field pada kotak merah pada hasil running diatas jelas merupakan tanggal lahir, yang dapat menampilkan angka floating point yang sebenarnya; pada saat yang sama, sel yang digabungkan harus memiliki konten, dan hasilnya tidak boleh kosong.
Jangan khawatir, mari selesaikan dua masalah ini satu per satu:
1. Bagaimana Python membaca konten sel di Excel sebagai tanggal
Python membaca isi sel di Excel dan mengembalikan 5 jenis, yaitu ctype pada contoh di atas:
ctype: 0 kosong, 1 string, 2 angka, 3 tanggal, 4 boolean, 5 kesalahan
Artinya, tanggal ctype = 3. Pada saat ini, Anda perlu menggunakan xldate_as_tuple xlrd untuk memprosesnya sebagai format tanggal. Jika Anda menilai tabel ctype = 3, xldate dapat memulai operasi.
Kode detailnya adalah sebagai berikut:
impor xlrd dari tanggal impor datetime, datetime cetak (sheet1.cell (1,2) .ctype) date_value = xlrd.xldate_as_tuple (sheet1.cell_value (1,2), wb.datemode) cetak (nilai_tanggal) cetak (tanggal (* nilai_tanggal)) cetak (tanggal (* nilai_tanggal) .strftime ('% Y /% m /% d'))Hasilnya adalah sebagai berikut:
2. Dapatkan konten sel yang digabungkan
Sebelum operasi, izinkan saya memperkenalkan penggunaan merged_cells (). Arti dari empat parameter yang dikembalikan oleh merged_cells adalah: (row, row_range, col, col_range), di mana
- Konsumsi bahan bakar per 100 kilometer serendah 1,7L! MPV Jiaji pertama Geely: 5/6/7 kursi yang bisa Anda pilih
- Olimpiade Musim Dingin sedang berlangsung | Tampilan hasil pelatihan tim ski Komite Penyelenggara Olimpiade Musim Dingin Beijing dan latihan simulasi aktual
- Olimpiade Musim Dingin di sisi Anda | Rasakan keseruan olahraga musim dingin di depan pintu Anda. Musim Es dan Salju Musim Dingin ke-4 Distrik Fengtai dimulai