Openpyxl hatası

Merhaba. Mevcut Excel dosyasının bir sekmesini farklı bir excel dosyası olarak kaydetmek istiyorum. Uzun aramalar sonucunda mevcut dosyanın istediğimiz sekme dışında kalan bütün sekmelerini silip tek sekme olarak kaydetme yöntemini buldum. İşe yarıyor . Fakat excel dosyalarını açtığımda bu hataları alıyorum. Tabi kaydet dedikten sonra tekrar açtığımda sorun kalmıyor. Daha iyi bir çözüm yolu bilen var mı?

wb = openpyxl.load_workbook(‘tumtablolar.xlsx’)
sheets = wb.sheetnames.copy()
for s in sheets:
if s != ‘Sekme1’:
del wb[s]
wb.save(‘Sekme1.xlsx’)

Merhaba.

Hatanın sebebi kütüphanenin eksik kullanım sağlamasından kaynaklı. Anlaşılan workbook’ların __delitem__ metodunu pek umursamamışlar. Kısacası sheetleri silme şekliniz yanlış, burayı inceleyin:
https://www.pythonexcel.com/delete-sheet.php

1 Beğeni

Dediğiniz gibi __delitem__ metodunu pek umursamamışlar. Sorun verilen hatada da söylendiği gibi “Adlandırılmış Aralık” taymış. Openpyxl bir sekmeyi sildiğinde sadece sekmeyi siliyor. Çalışma kitabında buluan o sekmeyle ilgili kayıtları silmiyor. Mesela silinen sekmenin bazı hücre aralıklarını adlandırmış olabiliriz. (benim şablonda olduğu gibi.) Bu durumda dosya açılırken adlandırmış aralıklara bakıyor. Sonra referans gösterdiği sekmeyi arıyor. Bulamayınca da böyle hata veriyor. Ben de yeni bir şablon yaptım. Sorun çözüldü.