文章目录
- 前言
- 利用xlrd实现读取Excel信息
- 1. 打开Excel文件
- 2. 获取Excel文件的所有表名
- 3. 根据索引获取对应的表对象
- 4. 根据表名获取对应的表对象
- 5. 获取所有的表对象
- 6. 表对象的对应信息
- 对应Excel信息
- 全部代码
- 利用xlwt实现Excel写入
- 1. 新建Excel文件
- 2. 新建一张表
- 3. 给指定单元格写入对应信息
- 4. 保存Excel文件
- 5. 完整例子
前言
本文利用xlrd库来读取Excel信息,以及xlwt来实现写入功能。
需要注意的是,xlwt实际上不能对原Excel文件进行,只能另存为一个Excel文件。也就是说操作过后对原文件没有影响,但是可以另存为一个名字相同的Excel文件将其覆盖。
注意:xlrd最新版本不支持.xlsx文件 。解决方案,回退到xlrd1.2.0版本
利用xlrd实现读取Excel信息
1. 打开Excel文件
workbook = xlrd.open_workbook(filename) # 注意filename为字符串类型
例如:
workbook = xlrd.open_workbook("成绩表.xlsx") # 此时使用的是相对路径
2. 获取Excel文件的所有表名
workbook.sheet_names() # 返回结果为列表类型,里面包含多个表名
3. 根据索引获取对应的表对象
sheet = workbook.sheet_by_index(0) # 返回第一个表的对象
4. 根据表名获取对应的表对象
sheet = workbook.sheet_by_name("1班") # 返回 1班 的表对象
5. 获取所有的表对象
sheets = workbook.sheets()
6. 表对象的对应信息
- 表名
sheet.name
- 表行数
sheet.nrows
- 表列数
sheet.ncols
- 表对应位置的信息
(1) 获取单个单元格
cell = sheet.cell(raw, col) # 第一个参数为行,第二个参数为列
cell.value # 为对应单元格的值
注意:行和列都从0开始计数
例子:
cell = sheet.cell(0,2) # 实际为第一行第三列
print(cell.value) # 输出单元格的值
(2)获取指定行的单元格信息
sheet.row_slice(row, begin, end)
# 第一个参数为行,第二个参数为列起点,第三个为列终点的后一个位置
# 也就是说 取row行的 [begin, end) 区间
例如:
cells = sheet.row_slice(1,0,4) # 第2行的第一列到第四列
for cell in cells:
print(cell.value,end = "\t")
print()
(3)获取指定列的单元格信息
sheet.col_slice(col, begin, end)
# 第一个参数为列,第二个参数为行起点,第三个为行终点的后一个位置
# 也就是说 取col列的 [begin, end) 区间
例如:
cells = sheet.col_slice(1, 0, 8)
for cell in cells:
print(cell.value, end="\t")
print()
对应Excel信息
文件名为:成绩表.xlsx
表名主要有:1班,2班,Sheet3
1班的内容为:
其他两个表内容为空。
全部代码
import xlrd
workbook = xlrd.open_workbook("成绩表.xlsx") # 打开Excel文件
print("所有表名:", workbook.sheet_names()) # 输出所有表名
sheet = workbook.sheet_by_index(0) # 根据索引获取sheet对象
print("所选表名:", sheet.name) # 输出表名
sheet = workbook.sheet_by_name("1班") # 根据表名获取sheet对象
print("所选表名:", sheet.name) # 输出表名
sheets = workbook.sheets() # 获取所有表对象
for sheet in sheets:
print(sheet.name,end = '\t') # 输出所有表名
print()
print({'行:':sheet.nrows,'列:':sheet.ncols}) # 输出表的行和列
# ----------------Cell的相关操作----------------
cell = sheet.cell(0, 2) # 第一个参数是行,第二个参数是列
print(cell.value) # 输出单元格的值
cells = sheet.row_slice(1, 0, 4) # (行位置, 列起点, 列终点) 左闭右开
for cell in cells:
print(cell.value, end="\t") # 输出对应值
print()
cells = sheet.col_slice(1, 0, 8) # (列位置,行起点,行终点) 左闭右开
for cell in cells:
print(cell.value, end="\t") # 输出对应值
print()
利用xlwt实现Excel写入
1. 新建Excel文件
workbook = xlwt.Workbook()
2. 新建一张表
workbook.add_sheet(sheet_name) # sheet_name为字符串类型
例如:
sheet = workbook.add_sheet("sheet1")
3. 给指定单元格写入对应信息
sheet.write(row, col, content)
# 第一个参数为行,第一个参数为列,第三个参数为对应内容
例如:
sheet.write(0, 0, "名字")
注意:同一个单元格不能多次写入
4. 保存Excel文件
workbook.save(file_name) # file_name为字符串类型
例如:
workbook.save("成绩表1.xls")
5. 完整例子
import xlwt
import random
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("1班") # 新建一个表
headers = ['姓名','语文','英语','数学']
for index,header in enumerate(headers): # 添加第一行信息
sheet.write(0,index,header) # (行, 列, 内容)
names = ['张三','李四','王五'] # 添加第一列信息
for index,name in enumerate(names): # enumerate函数可以获取索引
sheet.write(index+1,0,name)
for row in range(1,4): # 中间成绩取随机数
for col in range(1,4):
sheet.write(row, col, random.randint(65, 100))
workbook.save("成绩表1.xls") # 保存Excel文件