现有两个 xls 文件:互评成绩 (Homework1-1.xls) 和成绩模板 (Homework1.xls)。请使用 python 将互评成绩中的“分数”写入到成绩模板中“成绩”一栏,要求同一个学生的成绩在两 张表中保持一致(提示:可借助 xlrd、xlutils 包)
时间: 2023-06-17 15:02:48 浏览: 112
readwrite-xls-file.rar_c++读取xls文件_site:www.pudn.com_xls
好的,我来给您介绍一下处理这个问题的具体步骤。
首先,我们需要安装 xlrd 和 xlutils 这两个包。您可以在命令行中输入以下命令来安装它们:
```
pip install xlrd
pip install xlutils
```
接着,我们需要打开这两个 xls 文件。我们可以使用 xlrd 包中的 open_workbook() 函数来打开文件,具体代码如下:
```python
import xlrd
# 打开互评成绩文件
wb1 = xlrd.open_workbook('Homework1-1.xls')
# 打开成绩模板文件
wb2 = xlrd.open_workbook('Homework1.xls')
```
接下来,我们需要获取这两个文件中的数据。我们可以使用 xlrd 包中的 sheet_by_index() 函数来获取文件中的第一个 sheet,具体代码如下:
```python
# 获取互评成绩文件中的第一个 sheet
sheet1 = wb1.sheet_by_index(0)
# 获取成绩模板文件中的第一个 sheet
sheet2 = wb2.sheet_by_index(0)
```
然后,我们需要遍历互评成绩文件中的每一行数据,找到对应学生在成绩模板文件中的行,并将分数写入到成绩一栏中。我们可以使用 xlutils 包中的 copy() 函数来复制成绩模板文件,然后使用 xlutils 包中的 get_sheet() 函数来获取复制后的 sheet,最后使用 write() 函数来写入分数,具体代码如下:
```python
from xlutils.copy import copy
# 复制成绩模板文件
wb3 = copy(wb2)
sheet3 = wb3.get_sheet(0)
# 遍历互评成绩文件中的每一行数据
for i in range(sheet1.nrows):
# 获取学生姓名和分数
name = sheet1.cell_value(i, 0)
score = sheet1.cell_value(i, 1)
# 在成绩模板文件中查找对应学生的行
for j in range(sheet2.nrows):
if sheet2.cell_value(j, 0) == name:
# 将分数写入到成绩一栏中
sheet3.write(j, 1, score)
break
# 保存修改后的成绩模板文件
wb3.save('Homework1_new.xls')
```
最后,我们将修改后的成绩模板文件保存到本地,代码中保存的文件名为 Homework1_new.xls。
以上就是处理这个问题的具体步骤,希望对您有所帮助。
阅读全文