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