我正在使用模板生成一个Excel,
from openpyxl import Workbook
from openpyxl import load_workbook
src_file = 'D:\\code\\TestLink-Report\\pyxl.xlsx'
wb = load_workbook(filename = src_file, guess_types = False)
sheet = wb.worksheets[0]
sheet.cell('A1').value = 'blabla'
wb.save(filename = src_file)
如果src_file是新的空白,它可以工作。 如果我通过手动更改src文件中任何列的宽度,再次运行代码,它将失败
wb.save(filename = src_file)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\workbook.py", line 265, in save
save_workbook(self, filename)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\excel.py", line
187, in save_workbook
writer.save(filename)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\excel.py", line
170, in save
self.write_data(archive)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\excel.py", line
98, in write_data
self._write_worksheets(archive, shared_string_table, self.style_writer)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\excel.py", line
128, in _write_worksheets
style_writer.get_style_by_hash()))
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\worksheet.py", line 98, in write_worksheet
write_worksheet_cols(doc, worksheet, style_table)
File "D:\Python27\envs\TestLink\lib\site-packages\openpyxl\writer\worksheet.py", line 209, in write_worksheet_cols
col_def['style'] = str(style_table[hash(columndimension.style_index)])
KeyError: 549131827
我正在使用Excel 2013。 我听说openpyxl在stackoverflow上搜索后不支持样式。但我的问题似乎应该是一件简单的事情。
答案 0 :(得分:1)
此问题已得到解决here
运行此命令以获取最新版本
hg clone https://bitbucket.org/ericgazoni/openpyxl
cd openpyxl/
hg up 1.8
python setup.py develop
答案 1 :(得分:0)
是否可以使用 win32com
作为选项?可以在下面进行简单的列格式化:
from win32com.client import Dispatch
xl = Dispatch("Excel.Application")
filestr = "C:\blah\pytest.xlsx"
wbk = xl.Workbooks.Open(filestr)
wsht = wbk.Sheets(1)
wsht.Range("A1").Value = "Hello World!"
wsht.Columns(1).ColumnWidth = 50
wbk.SaveAs("C:\blah\pytested.xlsx")
xl.Application.Quit()
如果您只需要调整列宽,则可以将其与 openpyxl
结合使用。
如果有帮助,请告诉我们。 :)
答案 2 :(得分:0)
openpyxl
目前正在进行工作以解决您遇到的错误。 1.8和1.9分支当前都会阻止它发生,但生成的Excel文件可能无法使用。