[英]Change number format using headers - openpyxl
我有一個 Excel 文件,我想在其中將數字格式從“常規”轉換為“日期”。 當提到專欄字母時,我知道如何為一專欄這樣做:
workbook = openpyxl.load_workbook('path\filename.xlsx')
worksheet = workbook['Sheet1']
for row in range(2, worksheet.max_row+1):
ws["{}{}".format(ColNames['Report_date'], row)].number_format='yyyy-mm-dd;@'
如您所見,我現在使用列字母“D”來指出我想要以不同方式設置格式的列。 現在,我想使用名為“Start_Date”的第 1 行中的 header 來引用此列。 我嘗試了以下帖子中的一種方法來實現此目的: select a column by its name - openpyxl 。 但是,這導致了 KeyError:“Start_Date”:
# Create a dictionary of column names
ColNames = {}
Current = 0
for COL in worksheet.iter_cols(1, worksheet.max_column):
ColNames[COL[0].value] = Current
Current += 1
for row in range(2, worksheet.max_row+1):
ws["{}{}".format(ColNames['Start_Date'], row)].number_format='yyyy-mm-dd;@'
編輯此方法導致以下錯誤:
AttributeError: 'tuple' object has no attribute 'number_format'
此外,我還有更多列需要更改數字格式。 我有一個包含這些列名稱的列表:
DateColumns = ['Start_Date', 'End_Date', 'Birthday']
有沒有一種方法可以使用列表 DateColumns 以便我可以保存一些代碼行?
提前致謝。
請注意,我之前發布了一個類似的問題。 以下帖子被稱為答案Python:Simulating CSV.DictReader with OpenPyXL 。 但是,我看不出如何根據我的需要調整該帖子中的答案。
您需要知道您想要更改哪些列的數字格式,您可以方便地將其放入列表中,所以為什么不直接使用該列表。
獲取工作表中的標題,檢查 Header 是否在 DateColumns 列表中,如果是,則使用您想要的日期格式將該列中的所有條目從第 2 行更新到最大值...
...
DateColumns = ['Start_Date', 'End_Date', 'Birthday']
for COL in worksheet.iter_cols(min_row=1,max_row=1):
header = COL[0]
if header.value in DateColumns:
for row in range(2, worksheet.max_row+1):
worksheet.cell(row, COL[0].column).number_format='yyyy-mm-dd;@'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.