首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas读取excel格式

pandas读取excel格式
EN

Stack Overflow用户
提问于 2016-06-26 20:15:57
回答 3查看 9.8K关注 0票数 10

如何在设置电子表格的格式时获取它们的值?我正在处理一种货币格式的电子表格

例如:

代码语言:javascript
运行
复制
ITEM NAME UNIT PRICE
item1     USD 99
item2     SGD 45

但是术语'USD‘和'SGD’是使用excel的格式化功能添加的,pandas的read_excel函数看不到它们。我会得到值,但不会得到货币名称。我只能在电子表格上工作,而且考虑到我有各种电子表格,每个电子表格大约有6-7个工作表,我希望有一个pandas (或python)-level解决方案,而不是excel级别的解决方案。

谢谢你们。

对Daniel来说,这就是我实现“xlrd”引擎的方式,它似乎什么也做不了。

代码语言:javascript
运行
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2016-06-26 23:13:53

没有任何很好的方法可以做到这一点。pandas不了解数字格式,而且xlrd似乎无法从.xlsx文件中读取格式-请参阅here

您可以使用openpyxl来实现这一点,它至少可以访问数字格式,但是看起来您基本上必须自己实现所有的解析逻辑。

代码语言:javascript
运行
复制
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 "#'
票数 9
EN

Stack Overflow用户

发布于 2021-06-25 20:57:15

老实说,xlrd允许你访问单元格格式信息。

代码语言:javascript
运行
复制
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)  
票数 1
EN

Stack Overflow用户

发布于 2016-06-27 13:22:52

对于任何有同样问题的人,我使用下面的answer将每个工作表划分为CSV

它保留了电子表格中显示的货币详细信息,虽然有点麻烦,但它还是完成了这项工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38038428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档