用Python读取excel文件的指定单元格

结论

常用的读取Excel文件数据的Python库有3种:
(1)xlrd
(2)openpyxl
(3)pandas

读取xlsx或者xlsm文件,选择openpyxl和pandas提供的接口;如果是xls文件,可以选择xlrd。

这里记录一下我在读取.xlsm文件过程中遇到的问题、以及验证通过的代码。

代码示例

准备工作:

通过PyCharm的[File - Settings]分别下载了xlrd、openpyxl、pandas的最新版本。

1.xlrd

【遇到的问题】

用xlrd的方法来读取.xlsm文件:

Workbook = xlrd.open_workbook("D:\\Test\\src1.xlsm")

报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported

【解决方案】

下面这篇文章里提到:“xlrd包的版本过高(2.0.1),不支持xlsx格式,只支持xls格式。”

https://blog.csdn.net/qq_45975931/article/details/128379809

里面提供了2种解决方法:

一、调低xlrd版本
二、调低excel版本

方法1我不想尝试,因为不知道低版本会不会引来其他问题。

方法2就是把xlsm文件另存为.xls格式,读取.xls文件的数据。结果是可行的。

下面是运行OK的代码:

import xlrd

def read_data():

    # 指定xls文件路径
    workbook = xlrd.open_workbook("D:\\Test\\src1.xls")

    # 指定sheet名称
    sheet = workbook.sheet_by_name('SampleSheet')

    # 从0开始计数,5行3列,相当于'D6'单元格
    row = 5
    col = 3
    value = sheet.cell_value(row,col)

    print(value)

但是这样做代码逻辑就变成了①先把xlsm转存为xls,②读取数据,③删除临时文件。我觉得太多余了,所以试了另外两个库。

2.openpyxl

用openpyxl的load_workbook方法读取.xlsm文件,结果可行。

代码如下:

from openpyxl import load_workbook


def read_data():

    # 指定文件路径,data_only属性作用是取值,不取公式
    workbook = load_workbook(filename="D:\\Test\\src1.xlsm", data_only=True)

    # 指定sheet页
    sheet = workbook["SampleSheet"]

    # 取D6单元格的值
    result = sheet["D6"].value
    print('Result:'+result)

    workbook.close()

3.pandas

用pandas的read_excel方法读取.xlsm文件,结果可行。

代码如下:

import pandas as pd

def read_data():

    # 指定文件路径和sheet名称,不设置header
    df = pd.read_excel("D:\\Test\\src1.xlsm",sheet_name='SampleSheet',header=None)

    # 从0开始计数,5行3列,相当于D6单元格
    result = df.iloc[5,3]

    print('result:'+result)

另外,pandas还有read_csv方法用于读取csv文件,to_csv用于生成csv文件。

最后选择用pandas库来实现我需要的功能。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值