2011-07-21 10 views
12

Düzenlemek için bir .xlsx dosyam var, openpyxl, Excel 2007 dosyalarını değiştirebilirdim. Sadece bazı hücrelerdeki değeri değiştirmek ve diğer ayarları değiştirmeden bırakmak istiyorum.Bir Excel2007 dosyasını (.xlsx) kendi stillerini değiştirmeden düzenlemek için openpyxl'i kullanın.

Documentation'u geçtikten sonra, varolan bir dosyayı düzenlemek için örnekleri bulamıyorum. Sadece bir .xlsx dosyasını okuyup yeni bir yazıya yazdı.

Mevcut bir dosyayı düzenlemek için yol aşağıda çalıştım ama kaydettikten sonra, dosyadaki stilleri kaldırıldı (yazı tipleri gibi, renkler):

from openpyxl.reader.excel import load_workbook 
wb=load_workbook(r'd:\foo1.xlsx') 
ws=wb.get_sheet_by_name('Bar') 
ws.cell('A1').value= 'new_value' 
# save the workbook to a new file to finish the editing 
# but the style settings has been removed (such like font, color) in the new file 
wb.save(r'd:\foo2.xlsx') 

cevap

13

Artık openpyxl stilleri yeterince iyi işleyemiyor, bu yüzden pywin32 COM'u kullanmayı denedim ve çözümü aldım. İşte şu sınıfının bir örneğini oluşturarak aşağıdaki kodu deneyin Excel

için pywin32 COM
+3

Bağlantı güzel! Çevrimdışı olması durumunda, aynı içeriğe sahip bir dürtü: https://gist.github.com/airstrike/5469478 –

1

Stiller henüz tam desteklenmez openpyxl. Son zamanlarda stil yeteneklerini geliştirdiği için, latest version (şimdi 1.5.3) kullandığınızdan emin olun.

xlwt, .xls dosyaları için daha eksiksiz bir biçimlendirmeye sahiptir, ancak xlsx'i henüz desteklememektedir.

+0

Evet, v1.5.3 kullanıyorum, bu yüzden şu anda iyi bir yol yok gibi görünüyor. Pywin32 ile çalışmak ister misiniz? – Xiao

+1

COM, sözde çalışır - ve ofisin yerel arabirimini kullanır. Sadece windows üzerinde çalıştığı gibi denemedim. Onunla iyi şanslar! –

+0

Stiller yeni sürümle sütun güncellendikten sonra devam edebilecek mi? – conandor

-3

kullanmak iyi python-excel-mini-cookbook geçerli: openpyxl ile excel verileri yönetmek için

openpyxl ithalat load_workbook

Sınıf dan

class Copy_excel: 
def __init__(self,src): 
    self.wb = load_workbook(src) 
    self.ws = self.wb.get_sheet_by_name("Sheet1") 
    self.dest="destination.xlsx" 

#Write the value in the cell defined by row_dest+column_dest   
def write_workbook(self,row_dest,column_dest,value): 
    c = self.ws.cell(row = row_dest, column = column_dest) 
    c.value = value 

#Save excel file 
def save_excel(self) : 
    self.wb.save(self.dest) 

Asla pes etmeyin!

+0

Bu soruya cevap vermiyor. – matt2000

+0

Evet, bu sınıfla, sayfanın stilini değiştirmeden bir excel dosyasını düzenleyebilirsiniz. – Heisenberg

İlgili konular