Python系列一之excel的读取

这里我常用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的写入,一个是 xlrd 用于 excel 文件的读取。

使用的库的版本如下:

  • xlsx==1.2.6
  • xlrd==1.1.0

xlsxwriter 写入 excel

新建一个 excel

复制代码
import xlsxwriter

path = "/Users/hunter/xxx.xlsx"

wb = xlsxwriter.Workbook(path)

添加一个 sheet:

复制代码
# 定义 sheet 的名称
sheet_name = "sheet_name"  

# 添加一个 sheet 页
sheet_1 = wb.add_worksheet(sheet_name)

sheet 表格数据的写入

sheet 的表格数据有几种方式,一种是通过 x, y 这种坐标轴定位的方式,从左上角开始,左上角也就是 'A1' 的位子为 (0, 0)。

比如我们想要在左上角写入数据:

复制代码
sheet1.write(0, 0, "A1数据")

如果我们想要在第二行,第三列写入数据:

复制代码
sheet1.write(1, 2, "C2数据")

另一种是通过 excel 的单元格名称来定位写入,比如 'A1','D4'这种:

复制代码
sheet1.write("A1", "A1数据")
sheet1.write("F2", "F2数据")

批量写入

除了单个单元格的数据写入,我们还可以通过某个起始单元格来批量写入。

批量写入可以从横向写入,也可以从纵向写入。

比如如果想要从 C2 单元格开始,横向写入 python,java,JS 三条数据,可以如下操作:

复制代码
sheet1.write_row("C2", ["python", "java", "JS"])

也可以通过 i, j 的定位方式来操作,比如从 "C3" 开始往后写入:

复制代码
sheet1.write_row(2, 2, ["python", "java", "JS"])

上面的 write_row() 方法是横向写入,从起始位置横向开始写,如果是纵向,那就使用 write_column()

保存

然后将这个 excel 保存:

复制代码
wb.close()

xlrd 读取 excel

注意: 安装 xlrd 的时候不要安装默认的版本,当前默认的最新版本不能解析 xlsx 文件,我这里选择的是 xlrd==1.0.0

使用 xlrd 从 excel 中读取数据的操作方式如下:

获取 excel

复制代码
import xlrd

path = "/Users/hunter/xxx.xlsx"
workbook = xlrd.open_workbook(path)

获取 sheet

获取 sheet 对象列表:

复制代码
sheet_list = workbook.sheets()

获取所有的 sheet 的名称列表:

复制代码
sheet_name_list = workbook.sheet_names()

根据索引获取单个 sheet:

复制代码
i = 0
sheet = workbook.sheet_by_index(i)

获取单元格数据

如果直接获取单元格数据,可以通过坐标轴的 x, y 的方式来定位获取,其中左上角是 (0, 0)。

比如我们想获取 (0, 0) 位子的数据,也就是 'A1' 的单元格,我们可以:

复制代码
cell = sheet.cell(0, 0)

获取到的是这个单元格对象,如果想要获取其中的值,需要对 cell 对象再取值:

复制代码
print(cell.value)

也可以直接使用取值的方法:

复制代码
print(sheet.cell_value(0, 0))

获取行列数据

上面是通过单元格单个获取数据,我们可以单独获取行和列的数据,比如获取第二行的单元格:

复制代码
row_2 = sheet.row(1)

上面获取到的数据是一个对象列表,每个元素都是一个个的单元格 cell,也就是我们上面通过 cell() 函数获取到的对象。

如果是想直接取值,则可以:

复制代码
row_value_2 = sheet.row_values(1)

返回的是一个列表,元素是该行单元的 value 值

查看该行长度:

复制代码
row_value_2_len = sheet.row_len(1)

获取 sheet 的总行数:

复制代码
nrows = sheet.nrows

根据列获取数据将函数的 row 换成 col 即可,比如获取第二列的数据:

复制代码
col_value_2 = sheet.col_values(1)
相关推荐
Patrick在香港1 小时前
Claude 工具调用返回空:8 次失败里只有 1 次状态码不对,其余全带 200
爬虫·python·api·claude·香港
Web3&Basketball1 小时前
CRM Agent 后训练实战:3 倍更少错误
python·架构·大模型·agent·推理
AIFQuant2 小时前
ETF行情API接入踩坑记:从报错到跑通的七个问题
python·金融·区块链·etf·基金
GPU实战笔记3 小时前
云端 Python 开发:JupyterLab 还是 VS Code Remote-SSH?
python·vs code·jupyterlab·remote-ssh·远程开发
狗狗狗狗狗乐啊4 小时前
搭一个 AI 对话工作台 AChat:从 0 到可用的完整记录(一)
python·react.js·ai编程
白猫不黑4 小时前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
kuuailetianzi5 小时前
Python初识:定位、优势与发展历程
python
guoran_shini5 小时前
LLM微调-训练垂类问答模型
python·lora·sft
basketball6165 小时前
Python FastAPI 介绍以及常用方法
python·fastapi·vllm·ai infra
论文复现现场6 小时前
企业知识库 RAG 用什么模型便宜?GLM-5.3-Flash 长文本 API 实测
python·rag·企业知识库·大模型api·glm-5.3-flash