我正在用xlwt编写excel表单,除了一件小事之外它工作得很好。我想将数字零显示为短划线( - ),它与会计的方式相同。但是,我不希望它在所有内容之前显示美元符号$,而且我不希望它有成千上万的逗号。
我认为这将是一个相当容易解决的问题,我只是将excel中的格式设置为我想要的,然后查看“格式 - >自定义格式”以获得确切的格式字符串。这样做会让我使用_(* (#,##0);_(* "-"_);_(@_)
(这不会处理逗号,但会显示为短划线并删除$)。
不幸的是,当我在xlwt中使用该字符串时,它似乎将其重置为会计默认值:_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)
。我认为这是xlwt中的一个错误,但有没有人知道是否有办法让我做我想做的事情?
编辑: 不知道它为什么会起作用,但我的问题似乎是通过从字符串中删除逗号来解决的。这正在改变:
'_(*#,## 0 _); _(*(#,## 0); _(*“ - ”); (@ )' 至 '(* ### 0 _); _(*(### 0); _(*“ - ”); (@_)'
我相信这是有效的,因为xlwt在你只是删除$而不是写为会计默认值时不会将其视为自定义格式,但是当你删除$和逗号时它将其踢入自定义格式方法,这就是我想要的。
为了回应John,我正在使用tablestyle.numformat属性。基本代码是:
style = xlwt.xlwt.XFStyle()
style.num_format_str = '_(* ###0_);_(* (###0);_(* "-"_);_(@_)'
我现在唯一想要改变的是让负数看起来像-5,而不是会计(5),但我想我可以忍受它现在的样子。如果有人可以解释excel格式字符串是如何工作的话可能会很好,我可以看到它们中的一些押韵/理由,但是我很容易被我剪切和粘贴的这些长数字串混淆。
答案 0 :(得分:0)
这是一些最小的工作代码。在输出电子表格中,A列使用您的原始格式,B使用您最初想要的内容(会计格式),C列使用非会计格式。
import xlwt
custom_fmts = (
'_(* (#,##0);_(* "-");(@)',
'_(#0_);(#0);"-"_)', # positive;negative;zero
'#0;-#0;"-"', # positive;negative;zero
)
xfs = [xlwt.easyxf('', fmt) for fmt in custom_fmts]
wb = xlwt.Workbook()
ws = wb.add_sheet('x')
for colx, xf in enumerate(xfs):
for rowx, value in enumerate((1234567, 0, -1234567)):
ws.write(rowx, colx, value, xf)
wb.save('demo_custom_format.xls')
您可能希望阅读可以通过this link访问的教程。
如果有人可以解释excel格式字符串的方式,那可能会很好 工作
没有好的告诉你RTFM因为关于Excel 5.0 AFAIK没有手册但是你总是可以HTF1K(点击F1键)然后在搜索框中输入custom formats
然后输入FYN(关注你的鼻)。