OpenPyXl不使用自定义列宽保存文件

我正在做一个脚本,将生成一个格式化的Excel电子表格。 我想使用[工作表] .column_dimensions []设置自定义列的宽度。 问题是,当我包含此代码的任何行时,脚本不再能够保存工作簿。 如果我注释掉保存文件行并保留列宽度行,则脚本不会产生错误。 同样的事情,如果我注释列宽度线,离开保存文件行。

这里是代码:(注意:出于testing目的,除了一列宽度行之外的所有行都被注释掉了。)

# Import libraries used by this script and set the Workbook from openpyxl import Workbook from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, Color from openpyxl.styles import NamedStyle, Font, Border, Color wb = Workbook() # Set font styles to be used in the workbook default = NamedStyle(name="default") default.font = Font(name='Arial', size=10, color="000000") title = NamedStyle(name="title") title.font = Font(name='Arial', size=14, color="000000", bold=True) header = NamedStyle(name="header") header.font = Font(name='Arial', size=11, color="BFBFBF", bold=True) bd = Side(style='thin', color="000000") header.border = Border(left=bd, top=bd, right=bd, bottom=bd) trend = NamedStyle(name="trend") trend.font = Font(name='Wingdings', size=11) wb.add_named_style(default) wb.add_named_style(title) wb.add_named_style(header) wb.add_named_style(trend) # Declare file name and path for the workbook dest_filename = 'test-book.xlsx' # Create and Format Summary tab ws1 = wb.active ws1.title = 'Summary of Results' ws1.column_dimensions['A'] = 18.00 #ws1.column_dimensions['B'] = 26.00 #ws1.column_dimensions['C'] = 9.00 #ws1.column_dimensions['D'] = 9.00 #ws1.column_dimensions['E'] = 9.00 #ws1.column_dimensions['F'] = 9.00 #ws1.column_dimensions['G'] = 9.00 # Set Summary tab Title ws1.merge_cells('A1:G1') ws1['A1'].style = title ws1['A1'] = 'Summary of Results' # Create and Format Detailed tab ws2 = wb.create_sheet(title='Detailed Results') #ws2.column_dimensions['A'] = 18.00 #ws2.column_dimensions['B'] = 26.00 #ws2.column_dimensions['C'] = 7.00 #ws2.column_dimensions['D'] = 85.00 #ws2.column_dimensions['E'] = 25.00 #ws2.column_dimensions['F'] = 45.00 # Set Detailed tab Title ws2.merge_cells('A1:F1') ws2['A1'].style = title ws2['A1'] = 'Detailed Results' # Save the Workbook to the specified file name and path wb.save(filename = dest_filename) 

而且,这是由此产生的错误:

 Traceback (most recent call last): File "generate-report.py", line 68, in <module> wb.save(filename = dest_filename) File "/usr/local/lib/python2.7/dist- packages/openpyxl/workbook/workbook.py", line 339, in save save_workbook(self, filename) File "/usr/local/lib/python2.7/dist-packages/openpyxl/writer/excel.py", line 268, in save_workbook writer.save(filename) File "/usr/local/lib/python2.7/dist-packages/openpyxl/writer/excel.py", line 250, in save self.write_data() File "/usr/local/lib/python2.7/dist-packages/openpyxl/writer/excel.py", line 81, in write_data self._write_worksheets() File "/usr/local/lib/python2.7/dist-packages/openpyxl/writer/excel.py", line 199, in _write_worksheets xml = ws._write() File "/usr/local/lib/python2.7/dist- packages/openpyxl/worksheet/worksheet.py", line 866, in _write return write_worksheet(self) File "/usr/local/lib/python2.7/dist- packages/openpyxl/writer/worksheet.py", line 100, in write_worksheet cols = ws.column_dimensions.to_tree() File "/usr/local/lib/python2.7/dist-packages/openpyxl/worksheet/dimensions.py", line 229, in to_tree for col in sorted(self.values(), key=sorter): File "/usr/local/lib/python2.7/dist- packages/openpyxl/worksheet/dimensions.py", line 222, in sorter value.reindex() AttributeError: 'float' object has no attribute 'reindex' 

我发现人们有类似的问题,并修复OpenPyXl升级到1.8或1.9,但我目前正在运行版本2.4.1

任何帮助将不胜感激。

ws1.column_dimensions['A']返回一个ColumDimension对象。 你需要设置这个的宽度。

 ws.column_dimensions['A'].width = 40.0