xlrd和xlwt以及xlutils操作excel文件

一、xlrd获取文件内容

import xlrd#导入xlrd库

1.打开Excel文件

wb = xlrd.open_workbook('files/data1.xls')

2.获取所有工作表的表名# 工作簿.sheet_names()

names = wb.sheet_names()
print(names)#['students', 'teacher', 'data2']

3.获取工作表

1)获取所有的工作表: 工作簿.sheets()

all_sheet = wb.sheets()
print(all_sheet)#[Sheet  0:<students>, Sheet  1:<teacher>, Sheet  2:<data2>]

2)获取一个工作表:

# 工作簿.sheet_by_name(表名)
# 工作簿.sheet_by_index(下标)
stu_sheet = wb.sheet_by_name('students')
print(stu_sheet)#Sheet  0:<students>

tea_sheet = wb.sheet_by_index(1)
print(tea_sheet)#Sheet  1:<teacher>

4.获取最大行数和最大列数

行–工作表.nrows

列–工作表.ncols

m_r = stu_sheet.nrows
m_c = stu_sheet.ncols
print(m_r, m_c)#5 4

5.按行或者按列获取数据

1)按行获取数据

# 工作表.row_values(行下标)       -   获取指定行对应的所有数据(行下标是从0开始的)
result = stu_sheet.row_values(3)
print(result)       # ['小花', '女', 22.0, 95.0]
# 工作表.row_values(行下标, 起始列下标)    -   获取指定行中指定列开始所有的数据

# 工作表.row_values(行下标, 起始列下标, 终止列下标) -   获取指定行中指定范围的所有数据(终止列下标对应的数据取不到)
result = stu_sheet.row_values(2, 1, 3)
print(result)#['男', 25.0]

2)按列获取数据

# 工作表.col_values(列下标)
result = stu_sheet.col_values(0)
print(result)#['姓名', '小明', '张三', '小花', '老王']

# 工作表.col_values(列下标, 起始行下标)
result = stu_sheet.col_values(3, 1)
print(result)#[99.0, 87.0, 95.0, 77.0]

# 工作表.col_values(列下标, 起始行下标, 终止行下标)

练习1:一行一行的获取整个学生表中所有的数据
for x in range(m_r):
    print(stu_sheet.row_values(x))#从下标0开始,一行一行出现
练习2:一列一列的获取所有学生的信息
for x in range(m_c):
    print(stu_sheet.col_values(x, 1))

6.获取单元格

1.单个单元格

# 1)工作表.cell(行下标, 列下标)      -   获取指定位置对应的单元格对象
print(stu_sheet.cell(1, 0))#text:'小明'

# 2)单元格.value       -   获取单元格中的数据
print(stu_sheet.cell(1, 2).value)#20.0

2.行的所有单元格

# 3)工作表.row(行下标)       -      获取指定行中所有的单元格
result = stu_sheet.row(0)
print(result)#[text:'姓名', text:'性别', text:'年龄', text:'分数']

# 4)工作表.col(列下标)   -  获取指定列中所有的单元格
result = stu_sheet.col(0)
print(result)#[text:'姓名', text:'小明', text:'张三', text:'小花', text:'老王']

二、xlwt对文件进行写操作

import xlwt#导入

1.创建Excel文件(创建工作簿)

# 注意:创建工作簿的时候不会自动创建工作表
# xlwt只能创建新的Excel,无法获取已经存在的Excel文件
wb = xlwt.Workbook()

2.添加工作表

1)工作簿.add_sheet(表名) - 在工作簿中添加指定名字对应的工作表,这个表中的单元格不能重写

sheet1 = wb.add_sheet('数据1')

2)工作簿.add_sheet(表名, cell_overwrite_ok=True) - 在工作簿中添加指定名字对应的工作表,这个表中的单元格可以重写

sheet2 = wb.add_sheet('数据2', cell_overwrite_ok=True)

3.写入数据

# 工作表.write(行下标, 列下标, 数据)  - 将数据写入到指定工作表中指定位置
sheet1.write(0, 0, '名字')
sheet1.write(1, 2, 'hello')
# sheet1.write(0, 0, 'name')  # 报错,因为sheet不允许重写

sheet2.write(0, 0, '名字')
sheet2.write(1, 2, 'hello')
sheet2.write(0, 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您逐一解答。 第一个问题:您想让我帮您实现一个 Python 脚本,能够读取 Excel 文件中的成绩数据,并计算全班的成绩平均分,然后将结果写入表格的 63 行,学号列写上“平均分”,成绩列填入计算的平均分。是这样的吗? 如果是这样的话,可以参考下面的代码实现: ```python import xlrd import xlwt from xlutils.copy import copy # 读取 Excel 文件 workbook = xlrd.open_workbook('成绩.xls') sheet1 = workbook.sheet_by_index(0) # 统计全班成绩平均分 total_score = 0 for i in range(1, sheet1.nrows): total_score += sheet1.cell_value(i, 1) class_avg_score = total_score / (sheet1.nrows - 1) # 写入平均分 writebook = copy(workbook) sheet1 = writebook.get_sheet(0) sheet1.write(62, 0, '平均分') sheet1.write(62, 1, class_avg_score) writebook.save('成绩.xls') ``` 这个脚本首先使用 xlrd 库来读取Excel文件,并且计算全班的成绩平均分,然后使用 xlutils 库将结果写入到 Excel 文件中。注意,这个脚本在写入数据之前,需要先安装 xlrdxlwtxlutils 库。 第二个问题:您想让我帮您编写一个 Python 脚本,创建一个名为 data.txt 的文件,共有 100000 行,每行存放一个 1~100 之间的随机整数,是这样的吗? 如果是这样的话,可以参考下面的代码实现: ```python import random # 创建 data.txt 文件 with open('data.txt', 'w') as f: for i in range(100000): # 生成 1~100 之间的随机整数 random_int = random.randint(1, 100) # 将随机整数写入文件中 f.write(str(random_int) + '\n') ``` 这个脚本使用 random 库来生成 1~100 之间的随机整数,并将这些随机整数写入到 data.txt 文件中。注意,这个脚本在运行之前,需要确保当前目录下没有名为 data.txt 的文件,否则会覆盖原有的文件

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值