【发布时间】:2012-01-27 19:04:57
【问题描述】:
我正在用 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 格式字符串是如何工作的,那可能会很好,我可以在其中看到一些押韵/原因,但大部分时间都被我刚刚剪切和粘贴的这些长串数字弄糊涂了。
【问题讨论】:
-
“当我在 xlwt 中使用该字符串时”什么也没告诉我们。编辑您的问题以显示能够重现您的问题的最少代码。
标签: python excel number-formatting xlwt