如何在设置电子表格的格式时获取它们的值?我正在处理一种货币格式的电子表格
例如:
ITEM NAME UNIT PRICE
item1 USD 99
item2 SGD 45但是术语'USD‘和'SGD’是使用excel的格式化功能添加的,pandas的read_excel函数看不到它们。我会得到值,但不会得到货币名称。我只能在电子表格上工作,而且考虑到我有各种电子表格,每个电子表格大约有6-7个工作表,我希望有一个pandas (或python)-level解决方案,而不是excel级别的解决方案。
谢谢你们。
对Daniel来说,这就是我实现“xlrd”引擎的方式,它似乎什么也做不了。
excel = pd.ExcelFile('itemlist.xlsx', sheetname=None)
master = pd.DataFrame(None)
for sheet in excel.sheet_names:
df = pd.read_excel(excel,sheet,header=2, engine='xlrd')
master=master.append(df)发布于 2016-06-26 23:13:53
没有任何很好的方法可以做到这一点。pandas不了解数字格式,而且xlrd似乎无法从.xlsx文件中读取格式-请参阅here
您可以使用openpyxl来实现这一点,它至少可以访问数字格式,但是看起来您基本上必须自己实现所有的解析逻辑。
In [26]: from openpyxl import load_workbook
In [27]: wb = load_workbook('temp.xlsx')
In [28]: ws = wb.worksheets[0]
In [29]: ws.cell("B2") # numeric value = 4, formatted as "USD 4"
Out[29]: <Cell Sheet1.B2>
In [30]: ws.cell("B2").value
Out[30]: 4
In [31]: ws.cell("B2").number_format
Out[31]: '"USD "#'发布于 2021-06-25 20:57:15
老实说,xlrd允许你访问单元格格式信息。
book = xlrd.open_workbook("tmp/test.xls", formatting_info=True)
xf_index = book.sheet_by_index(0).cell_xf_index(5,7)
xf = book.xf_list[xf_index]
fmt = book.format_map[xf.format_key]
print(fmt.format_str, fmt.type) 发布于 2016-06-27 13:22:52
对于任何有同样问题的人,我使用下面的answer将每个工作表划分为CSV
它保留了电子表格中显示的货币详细信息,虽然有点麻烦,但它还是完成了这项工作。
https://stackoverflow.com/questions/38038428
复制相似问题