Use openpyxl to edit a Excel2007 file (.xlsx) without changing its own styles?

不羁岁月 提交于 2019-12-28 04:07:22

问题


I have a .xlsx file to edit, I found openpyxl could manipulate Excel 2007 files. I only want to change the value in some cells and leave other settings unchanged.

But after I went through the Documentation, I cannot find the examples to edit a existing file. It only demostrated reading a .xlsx file and writing to a new one.

I tried below way to edit an existing file, but after I saved it, the styles in the file has been removed( like fonts, colors):

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')

回答1:


Now openpyxl cannot handle styles good enough, so I tried using pywin32 COM and got the solution. Here is a good python-excel-mini-cookbook to use pywin32 COM for Excel




回答2:


Styles aren't fully supported yet in openpyxl. Make sure you're using the latest version (1.5.3 as of now), as it recently improved its style capabilities.

The xlwt has more complete formatting for .xls files, but doesn't support xlsx as of yet.




回答3:


Try the following code creating an instance of the following class:

from openpyxl import load_workbook

Class to manage excel data with openpyxl

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)

Never give up!!!



来源:https://stackoverflow.com/questions/6772438/use-openpyxl-to-edit-a-excel2007-file-xlsx-without-changing-its-own-styles

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!