Я пишу листы Excel с xlwt, и он отлично работает, за исключением одной мелочи. Я хотел бы отображать ноль в виде тире (-), как это происходит с учетом. Однако я не хочу, чтобы он показывал знак доллара, $, прежде всего, и я не хочу, чтобы он имел запятые в тысячах.
Я подумал, что это будет довольно легко решить, я просто захожу и устанавливаю формат в Excel на то, что мне нужно, затем просматриваю «Формат -> Пользовательский формат», чтобы получить точную строку формата. Это дает мне _(* (#,##0);_(* "-"_);_(@_)
для использования (это не относится к запятым, но отображает нули в виде черточек и удаляет $).
К сожалению, когда я использую эту строку в xlwt, она, кажется, сбрасывает ее на значение по умолчанию для учета: _($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)
. Я думаю, что это ошибка в xlwt, но кто-нибудь знает, есть ли способ обойти это, чтобы позволить мне делать то, что я хочу?
Edit:
Не знаю, почему это работает, но моя проблема, кажется, решается удалением запятых из строки. Это меняется:
'_ (* #, ## 0 _); _ (* (#, ## 0); _ (* "-" ); (@ )'
в
' (* ### 0 _); _ (* (### 0); _ (* "-" ); (@_)'
Я считаю, что это работает, потому что xlwt не видит его как пользовательский формат, когда вы просто удаляете $, а вместо этого записывает как учетную запись по умолчанию, но когда вы удаляете $ и запятые, он вставляет его в метод пользовательского формата что я и хочу.
В ответ Джону я использую их с атрибутом tablestyle.numformat. основной код будет:
style = xlwt.xlwt.XFStyle()
style.num_format_str = '_(* ###0_);_(* (###0);_(* "-"_);_(@_)'
Единственное, что я в идеале хотел бы изменить сейчас, это сделать так, чтобы отрицательные числа выглядели как -5, а не как бухгалтерия (5), но я думаю, что могу жить так, как сейчас. Было бы неплохо, если бы кто-то мог объяснить, как работают строки формата Excel, я вижу в них немного рифмы / причины, но в основном меня смущает эта длинная строка чисел, которую я просто вырезал и вставлял.