博客
关于我
python 读写xlsx
阅读量:754 次
发布时间:2019-03-23

本文共 2803 字,大约阅读时间需要 9 分钟。

优化后的文本(去掉不相关内容,语言更自然):


Python操作Excel文档详细教程

使用 xlrd 库读取、处理及写入Excel文件的示例代码

###引言

Excel 操作是日常办公中常用的任务之一,而 Python 的 xlrd 库为我们提供了对 Excel 文件进行读写操作的强大功能。本文将详细介绍如何使用 xlrd 来读取和写入 Excel 文件,并提供实用的代码示例。


一、读取Excel文件

1. 已安装 xlrd 库(前提)

确保你的 Python 环境中已安装 xlrd 库。可以通过以下代码检查是否安装:

import xlrd
print(xlrd.__version__)

2. 打开Excel文件

打开指定路径的 Excel 文件:

import xlrd
import os
# 设置文件路径
file = os.path.join(os.getcwd(), "abc.xlsx")
# 打开Excel文件
workbook = xlrd.open_workbook(file)

3. 获取工作表

使用 sheet_by_namesheet_by_index 方法获取特定工作表:

# 获取所有工作表名称
sheet_names = workbook.sheet_names()
# 获取第一个工作表
sheet = workbook.sheets()[0]
# 或者通过名称获取
sheet = workbook.sheet_by_name("娃哈哈")

4. 提取Excel数据

a. 获取表头数据
# 获取表头行数据
title_row = sheet.row(0)
# 打印表头值
print(title_row[0].value)
print(title_row[1].value)
b. 获取数据行
# 用循环读取所有行数据
nrows = sheet.nrows
for i in range(1, nrows):
data_row = sheet.row(i)
# 创建字典存储数据
my_dict = {}
for j in range(len(data_row)):
cell = data_row[j]
# 时间格式处理
if cell.ctype == 3:
date_value = xlrd.xldate_as_tuple(cell.value)
formatted_date = datetime(*date_value).strftime("%Y-%m-%d")
my_dict[cell.value] = formatted_date
elif cell.ctype == 2:
my_dict[cell.value] = int(cell.value)
else:
my_dict[cell.value] = cell.value
lst.append(my_dict)
c. 取单个单元格值
# 举例:读取第二行第三列
single_value = sheet.cell(1, 2)
print(single_value.value)
d. 获取单元格类型
# 判断单元格类型
cell_type = sheet.cell_type(1,2)
print(cell_type)

二、写入Excel文件

1. 创建新文件

import xlwt
# 创建工作簿
workbook = xlwt.Workbook()
# 创建新的工作表
sheet = workbook.add_sheet("您好")

2. 写入表头

# 写入表头
sheet.write(0, 0, "id")
sheet.write(0, 1, "name")
sheet.write(0, 2, "date")

3. 按照字典写入数据

# 假设 `lst` 中存储了字典数据
for i, dic in enumerate(lst):
row = i + 1
for j, (key, value) in enumerate(dic.items()):
sheet.write(row, j, value)

4. 保存文件

# 保存文件
workbook.save("11.xls")

三、常用技巧

a. 获取单元格名称
# 例如,A1 对应 `xlrd.B čeคล名("A1")`
cell_name = xlrd.cellname(0, 0)
print(cell_name)
b. 自定义读取函数
def read_cell(table, row, col):
value = table.cell_value(row, col)
cell_type = table.cell_type(row, col)
if cell_type == 0:
return "'memo"
elif cell_type == 1:
return value
elif cell_type == 2:
return int(value) if value % 1 == 0 else float(value)
elif cell_type == 3:
date_value = xlrd.xldate_as_tuple(value)
return datetime(*date_value).strftime("%Y-%m-%d")
elif cell_type == 4:
return True if value == 1 else False
return value

取值示例

# 使用函数读取特定单元格
table = workbook.sheet_by_name("娃哈哈")
print(read_cell(table, 1, 0)) # 第2行第1列
print(read_cell(table, 0, 1)) # 第1行第2列

四、结论

通过 xlrd 库,读取和写入 Excel 文件实现起来相对简单。通过了解不同单元格类型,合理处理数据格式,我们可以更高效地完成数据处理和分析任务。无论是日常办公工具还是自动化脚本,掌握这些技巧都能为你节省大量时间。

转载地址:http://bzyzk.baihongyu.com/

你可能感兴趣的文章
Nodejs中的fs模块的使用
查看>>
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>
nodejs字符与字节之间的转换
查看>>
NodeJs学习笔记001--npm换源
查看>>
NodeJs学习笔记002--npm常用命令详解
查看>>
nodejs学习笔记一——nodejs安装
查看>>
nodejs封装http请求
查看>>
nodejs常用组件
查看>>
nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
查看>>
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>
Nodejs教程09:实现一个带接口请求的简单服务器
查看>>
nodejs服务端实现post请求
查看>>
nodejs框架,原理,组件,核心,跟npm和vue的关系
查看>>
Nodejs模块、自定义模块、CommonJs的概念和使用
查看>>
nodejs生成多层目录和生成文件的通用方法
查看>>
nodejs端口被占用原因及解决方案
查看>>
Nodejs简介以及Windows上安装Nodejs
查看>>