阅读工作表并保留条件格式

我正在尝试用openpyxl读取excel工作表。 我觉得我正在失去表单中的条件格式信息,当我这样读:

xl = openpyxl.load_workbook(filename) 

当我读取文件中的所有单元格并保存它。 我得到一个电子表格,其中没有任何条件格式实现。

我可以在http://openpyxl.readthedocs.org/en/latest/formatting.htmlfind添加条件格式到电子表格的许多方法

但是我找不到在现有工作表中读取条件格式信息的方法。

我用来做读写的具体代码是,

 import openpyxl as xl xlf = xl.load_workbook(r'd:\test\book1.xlsx') sh = xlf.get_sheet_by_name('Sheet1') allcells = sh.get_cell_collection() wb = xl.Workbook() ws = wb.create_sheet() for c in allcells: row = c.row col = xl.cell.column_index_from_string(c.column) new_cell = ws.cell(row=row, column=col) new_cell.value = c.value new_cell.style = c.style.copy() ws.title = 'test' wb.save(r'd:\test\book1w.xlsx') 

我真的很接近,但我不能留下颜色。 仍然有一个错误,但是如果不是fill选项,至less添加下面的条件格式规则:

 for range_string in sh.conditional_formatting.cf_rules: for cfRule in sh.conditional_formatting.cf_rules[range_string]: ws.conditional_formatting.add(range_string, cfRule) 

这一个class轮也达到了同样的效果(但最终结果相同):

 ws.conditional_formatting.update(sh.conditional_formatting.cf_rules) 

现在,如果你在Excel中打开Manage Rules ,那么规则就在那里,但是当你打开这个文件时,它需要自动修复,并且我失去了颜色。 这里是超级有用的日志(这里是讽刺):

 <repairedRecord>Repaired Records: Conditional formatting from /xl/worksheets/sheet2.xml</repairedRecord></repairedRecords> 

当我试图直接复制conditional_formatting的三个属性时,我得到了类似的结果:

 ws.conditional_formatting.cf_rules = sh.conditional_formatting.cf_rules.copy() ws.conditional_formatting.max_priority = sh.conditional_formatting.max_priority ws.conditional_formatting.parse_rules = sh.conditional_formatting.parse_rules.copy() 

我一直在寻找想法的源代码 。

编辑

有一个非常简单的select。 不要创build一个全新的工作簿和工作表,并从头开始工作。 只需根据需要修改原稿,然后将其另存为一个不同的名称。 或者,您甚至可以将其保存为不同的名称来创build副本,然后修改副本。 这将保留所有格式化规则。

条件格式应该由openpyxl保存。 如果不是这样,请提交一个示例文件的错误。