parsingxlwt中公式的COUNT函数中的问题

每次运行其他脚本时,我都需要使用电子表格模块编写和更新简单的双工作表工作簿。 在testing了一些模块之后,由于在运行testing代码时出现了太多的错误(比如不能将多行文本值作为列标题格式化),放弃了openpyxl

现在,尝试xlwt ,这是我的testing代码:

 import xlwt from xlwt import Workbook, Formula workbook_name = 'xlwt_test01.xls' book = xlwt.Workbook() sheet01 = book.add_sheet('DATA') sheet02 = book.add_sheet('FORMULAE') sheet01.write(0, 0, 'Hello\nWorld') # A1: no style, no wrap, despite newline style = xlwt.XFStyle() style.alignment.wrap = 1 sheet01.write(0, 1, 'Hello\nWorld', style) # B1: with style, there is wrap sheet02.write(0, 0, 'count of rows\nin DATA worksheet', style) sheet02.write(1, 0, Formula('COUNTA(DATA!A:A)')) 

这失败如下:

 Traceback (most recent call last): File "xlwt_test01.py", line 33, in <module> File "C:\Python27\lib\site-packages\xlwt-1.0.0-py2.7.egg\xlwt\ExcelFormula.py", line 22, in __init__ raise ExcelFormulaParser.FormulaParseException("can't parse formula " + s) xlwt.ExcelFormulaParser.FormulaParseException: can't parse formula COUNTA(DATA!A:A) 

表2中公式的用途是统计表1中所有填充的行。

xlwt在公式方面有问题吗?

有人看到编码错误?

我可以物理地打开工作簿,并手动input相同的公式到另一个单元格(当然使用Excel =语法),它工作正常。 我已经下载了xlwt文档,并阅读它,但它相当轻,不提供太多的信息。

看起来问题是xlwt无法parsing列范围A:A .

您可以指定一些适用于您的较小范围,例如:

 sheet02.write(1, 0, Formula('COUNTA(DATA!A1:A100)')) 

或者明确指定整个列的范围:

 sheet02.write(1, 0, Formula('COUNTA(DATA!A1:A65536)')) 

当您打开文件时,完整的显式范围将被转换回COUNTA(DATA!A:A)