Python操作Excel文件总结

前言

本文利用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. 表对象的对应信息

  1. 表名
sheet.name
  1. 表行数
sheet.nrows
  1. 表列数
sheet.ncols
  1. 表对应位置的信息
    (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班的内容为:
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文件
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值