簡體   English   中英

如何避免在xlsxwriter(Python)中覆蓋單元格樣式格式?

[英]How to avoid overwriting of cell style format in xlsxwriter (Python)?

我正在使用Python 2.7 ,xlsxwriter 0.8.4

我有一個值列表,即intfloat ,我希望能夠在將數據寫入工作表單元格時應用不同的數字格式。

但是,使用set_num_format方法時,最后應用的格式將應用於已經寫入的單元格。 我想知道是否可以對每個寫操作單獨應用單元格格式? 如果沒有,那么如何不對它們進行硬編碼的情況下如何管理多種格式的對象

simple_style_percent_int = workbook.add_format({'bold': False, 'font_color': 'black','font_size': 11, 'font_name': 'Calibri','text_wrap': True, 'num_format': '0"%"'}) simple_style_percent_decimal = workbook.add_format({'bold': False, 'font_color': 'black','font_size': 11, 'font_name': 'Calibri','text_wrap': True, 'num_format': '0.0"%"'})

我運行的代碼:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

percent_format = workbook.add_format()

for item in [22.0, 34.68]:

    if item.is_integer():
        percent_format.set_num_format('0"%"')
        worksheet.write(1,1, int(item), percent_format)
    else:
        percent_format.set_num_format('0.00"%"')
        worksheet.write(2,1, item, percent_format)

workbook.close()

該腳本會將最后使用的格式(即小數百分比)應用於在先前的寫操作期間具有該格式的所有單元格(但是,我希望22表示為22% ,而不是22.00%

在此處輸入圖片說明

沒有什么可以阻止您定義以下多種格式的:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

percent_format_1 = workbook.add_format()
percent_format_1.set_num_format('0"%"')

percent_format_2 = workbook.add_format()
percent_format_2.set_num_format('0.00"%"')

for item in [22.0, 34.68]:
    if item.is_integer():
        worksheet.write(1,1, int(item), percent_format_1)
    else:
        worksheet.write(2,1, item, percent_format_2)

workbook.close()

這將為您提供:

excel截圖

注意,更改格式將使更改應用於已經使用該格式寫入的單元。 即,最終格式用於顯示所有關聯的單元格,這就是您看到它更改的原因。 有關更多信息,請參見修改格式


要使用這兩種不同的格式將其應用於整個數據列,您可以按以下方式枚舉數據:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

percent_format_1 = workbook.add_format()
percent_format_1.set_num_format('0"%"')

percent_format_2 = workbook.add_format()
percent_format_2.set_num_format('0.00"%"')

for rowy, item in enumerate([22.0, 34.68, 1.0, 5.0, 6.8], start=1):
    if item.is_integer():
        worksheet.write(rowy, 1, int(item), percent_format_1)
    else:
        worksheet.write(rowy, 1, item, percent_format_2)

workbook.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM