Python Excel tablolarını okur ve yazar; çok basit, kaba ve kullanımı kolaydır

Son zamanlarda bazı veri işleme ve hesaplama çalışmaları yapıyorum, veriler .CSV formatında kaydedildiği için doğrudan Excel ile işlemeye başladım.

Ancak bunu yapmak ve tekrar eden çalışmayı keşfetmek aslında pek mantıklı değil, bu yüzden bununla başa çıkmanıza yardımcı olacak küçük bir araç yazmayı düşündüm.

Daha önce Excel elektronik tablolarını işlemek için Python kullanarak bir kitapta okudum, ancak ne yazık ki dikkatlice okumadım.

Bu yüzden her yerde bilgi aradım, temel olarak günlük ihtiyaçları çözdüm ve sonunda görevi tamamladım, bu nedenle bu makaleyi yazmak, esas olarak kullanım sürecindeki ortak sorunları ve çözümleri kaydetmek için bir özet.

Python, Excel'i esas olarak xlrd ve xlwt olmak üzere iki kitaplık kullanarak çalıştırır, yani xlrd, Excel'i okumak için bir kitaplıktır ve xlwt, Excel yazmak için bir kitaplıktır.

Https://pypi.python.org/pypi adresinden indirilebilir. Aşağıdaki, Python'u sırasıyla okurken ve yazarken kaydeder.

  • Python Excel-xlwt yaz

Python'da Excel yazmanın zorluğu bir Çalışma Kitabının kendisini oluşturmak değil, verileri doldurmaktır, ancak bu kapsamda değildir.

Excel yazım işleminde de çetrefilli problemler var mesela birleştirilmiş hücrelere yazmak daha zahmetli, ayrıca farklı yazı stilleri de var.

Ayrıntılı kod aşağıdaki gibidir:

xlwt içe aktar # Tablo stilini ayarla def set_style (ad, yükseklik, kalın = Yanlış): style = xlwt.XFStyle () font = xlwt.Font () font.name = isim font.bold = kalın font.color_index = 4 font.height = yükseklik style.font = yazı tipi dönüş stili # Excel yaz def write_excel (): f = xlwt.Workbook () sheet1 = f.add_sheet ('öğrenci', cell_overwrite_ok = Doğru) row0 = colum0 = # İlk satırı yazın aralıktaki i için (0, len (satır0)): sayfa1.write (0, i, satır0 , set_style ('Times New Roman', 220, Doğru)) # İlk sütunu yazın aralıktaki i için (0, len (colum0)): sheet1.write (i + 1,0, sütun0 , set_style ('Times New Roman', 220, Doğru)) sheet1.write (1,3, '2006/12/12') page1.write_merge (6,6,1,3, 'bilinmeyen') # Satır hücrelerini birleştir page1.write_merge (1,2,3,3, ' ') # Sütun hücrelerini birleştir sheet1.write_merge (4,5,3,3, 'basketbol oyna') f.save ('test.xls') __name__ == '__ main__' ise: write_excel ()

Sonuç grafiği:

Burada write_merge () kullanımının kısa bir açıklaması, yukarıdaki gibi: sheet1.write_merge (1,2,3,3, 'oyun oynama'), yani dört sütundaki ikinci ve üçüncü sütunları ve birleştirilmiş hücreleri birleştirin İçerik "toplam" dır ve stil ayarlanmıştır. Bunların arasında, içindeki tüm parametreler 0'dan hesaplanır.

  • Python Excel-xlrd okur

Python Excel tablolarını okur xlwt ile karşılaştırıldığında, xlrd daha fazla arayüz sağlar, ancak aynı zamanda süreçte tarihleri okumak ve birleştirilmiş hücrelerin içeriğini okumak gibi birkaç zahmetli problem vardır.

Temel işlemlere bir göz atalım:

(Grafik verileri)

Genel fikir, dosyayı açmak, tabloyu seçmek, satır ve sütun içeriğini okumak ve tablodaki verileri okumaktır.

Ayrıntılı kod aşağıdaki gibidir:

xlrd içe aktar datetime içe aktarma tarihinden itibaren, datetime file = 'test3.xlsx' def read_excel (): wb = xlrd.open_workbook (dosyaadı = dosya) # Açık dosya print (wb.sheet_names ()) # Tüm tablo adlarını al sheet1 = wb.sheet_by_index (0) # Dizine göre tablo al sheet2 = wb.sheet_by_name ('derece') # Formu ada göre alın baskı (sayfa1, sayfa2) baskı (sayfa1.adı, sayfa1.nrows, sayfa1.ncols) rows = sheet1.row_values (2) # Satır içeriğini al cols = sheet1.col_values (3) #Sütun içeriğini alın baskı (satırlar) baskı (cols) print (sheet1.cell (1,0) .value) # Tablodaki içeriği üç yolla alın baskı (sayfa1.cell_value (1,0)) print (sheet1.row (1) .value)

Sonuçlar aşağıdaki gibidir:

Öyleyse sorun şu ki, yukarıdaki çalışan sonuçtaki kırmızı kutudaki alan, açık bir şekilde doğum tarihidir ve gerçek kayan nokta numarasını görüntüleyebilir; aynı zamanda, birleştirilmiş hücrede içerik olmalıdır ve sonuç boş olamaz.

Merak etmeyin, bu iki sorunu tek tek çözelim:

1. Python, Excel'deki hücre içeriğini tarih olarak nasıl okur?

Python, Excel'deki hücrelerin içeriğini okur ve 5 tür, yani yukarıdaki örnekte ctype döndürür:

ctype: 0 boş, 1 dize, 2 sayı, 3 tarih, 4 boole, 5 hata

Yani, tarihin ctype = 3. Şu anda, bunu bir tarih formatı olarak işlemek için xlrd's xldate_as_tuple'ı kullanmanız gerekir.Eğer tablonun ctype = 3'ü ilk olarak değerlendirirseniz, xldate işlemi başlatabilir.

Ayrıntılı kod aşağıdaki gibidir:

xlrd içe aktar datetime içe aktarma tarihinden itibaren, datetime baskı (sayfa1.cell (1,2) .ctype) date_value = xlrd.xldate_as_tuple (sayfa1.cell_value (1,2), wb.datemode) baskı (tarih_değer) print (tarih (* tarih_değer)) baskı (tarih (* tarih_değer) .strftime ('% Y /% m /% d'))

Sonuçlar aşağıdaki gibidir:

2. Birleştirilmiş hücrenin içeriğini alın

İşlemden önce, merged_cells () kullanımını tanıtmama izin verin. Merged_cells tarafından döndürülen dört parametrenin anlamı: (satır, satır_aralığı, sütun, sütun_aralığı), burada

Huawei, Tmall 11.11'de Android satışlarının başında! Mate20, Çin cep telefonlarının en üst düzey amiral gemisi gücünü gösteriyor
önceki
Liu Jiayi, Qingdao delegasyonunun müzakeresine katıldı Liu Jiayi, Qingdao'ya ne gibi yeni şartlar getirdi?
Sonraki
295m "Qingdao Yeni Yükseklik" Uluslararası Nakliye Merkezi Dikey Maratonu başlıyor
Doğrudan kullanın! En popüler 10 JavaScript açık kaynak projesi
Pekin Kış Olimpiyatları kayak takımının antrenman sonuçları burada, sizi olay yerine götürüyor
En yüksek aylık maaş 1,88 milyon! Programcının favori Google'ı büyük bir hamle yaptı
100 kilometrede yakıt tüketimi 1,7 litreye kadar düşüyor! Geely'nin ilk MPV Jiaji'si: Seçebileceğiniz 5/6/7 koltuk
Kış Olimpiyatları devam ediyor | Pekin Kış Olimpiyatları Organizasyon Komitesi kayak takımı eğitim sonuçları gösteriliyor ve gerçek simülasyon alıştırmaları
Kış Olimpiyatları yanıbaşınızda | Kış sporlarının eğlencesini kapınızın önünde yaşayın Fengtai Bölgesi'nin 4. Mutlu Buz ve Kar Sezonu başladı
Xiaomi Li Flag: Gençler için ilk derin öğrenme çerçevesi olmak
10.000'den fazla iş soyuldu! Qingdao Özel Şirket İşe Alım Ayı ve "Bahar Esintisi Hareketi" bugün başladı.
"Ghost Probe" ayrıca size çok yönlü güvenlik bakımı sağlamak için MG HS'yi durdurabilir
Tekrar yükseltin! AI mühendisleri için bu temel yetenekler listesine bir göz atın!
İşyeri Asistanı / Shuxiang Space, güçlü bir hukuk kadını ve onun BMW 5 serisi
To Top