[英]Read .xlsx in .txt or .csv format with Python
有沒有辦法用 Python 讀取.txt
或.csv
格式的.xlsx
文件? 尋找一種在保留數字格式的同時讀取.xlsx
文件的方法(例如,45.890924 美元)。 四處搜索,找不到一個可行的模塊,並且以我的 Python 技能水平創建樣式轉換器幾乎是不可能的。
一些有用的注釋,Pandas 不是一個選項,因為它會自動擦除數字格式,而且我無法提前對列的格式進行分類,因為一列可以包含 20 多種不同的數字格式。
openpyxl
將單元格的內容存儲在value
中,並將格式存儲在number_format
中(以及對齊、顏色、字體、邊框等的其他一些屬性)。 因此,您可以解釋 Excel 格式代碼並將其轉換為 Python 格式 - 但是
'_-* #,##0.00\ [$€-410]_-;\-* #,##0.00\ [$€-410]_-;_-* "-"??\ [$€-410]_-;_-@_-'
綜上所述,做翻譯並非不可能。 下面是將 Excel 日期格式字符串轉換為 Python 的strftime()
指令的簡單函數。
def date_xl2py(dt, xlcode):
xl2py = {
'yy' : '%y',
'yyyy' : '%Y',
'm' : '%m', ##always zero-padded
'mm' : '%m',
'mmm' : '%b',
'mmmm' : '%B',
'mmmmm' : '%b', ##no single letter form
'd' : '%d', ##always zero-padded
'dd' : '%d',
'ddd' : '%a',
'dddd' : '%A',
'%' : '%%' ##escape the % char
}
pycode = []
for xlpart in findall(r'[d|m|y|h|s]+|.|(".+")', xlcode):
if xlpart in xl2py:
pycode.append(xl2py[xlpart])
else:
pycode.append(xlpart)
return ''.join(pycode)
dt = datetime(2022,7,12,15,56)
dt.strftime(date_xl2py(dt, 'ddd, mmmm dd, yyyy'))
'Tue, July 12, 2022'
請注意,我沒有考慮語言環境的規范。
此外,Excel 提供了 Python 中不可用的三個(相當無用的)日期格式選項(請參閱代碼中的注釋):我只是將它們映射到最相似的可用選項。
最后,如果要添加時間格式,則需要處理“mm”在 Excel 中可能是月或分鍾的事實,並根據上下文選擇正確的選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.