我正在用 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 格式字符串是如何工作的,那可能会很好,我可以在其中看到一些押韵/原因,但对我刚刚剪切和粘贴的这些长串数字感到困惑。