本次是在原来有一定格式的Excel文档中补充成绩。

安装的模块:xlwt 、 xlrd 、xlutils

xlrd的模块是只用读取xls文件,不能写文件,同理xlwt,只(新建写)不读已有的xls,

xlrd的用法:

打开文件: data =xlrd.open_workbook(fime_path+'011.xls')

读取sheet: table = data.sheet_by_index(0)

获取行数和列数:

nrows = table.nrows

ncols = table.ncols

读取单元格:table.cell(i,j).value

xlwt的用法

初始化workbook对象:wbk = xlwt.Workbook()

表单创建: sheet = wbk.add_sheet('sheet 1')

写单元: sheet.write(0,1,'test text')

保存: wbk.save('test.xls')

到了讲怎么在原有的xls文档追加。这就使用到xlutils,xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已,如下图:

导包:from xlutils.copy import copy

先用xlrd打开文件: old_xls = xlrd.open_workbook(file_path2,formatting_info=True)

然后复制,使其转化成xlwt对象:table_xlwt_b = copy(old_xls)

获取已有表单: table_xlwt = table_xlwt_b.get_sheet(0)

修改单元格值: table_xlwt.write(id_p,j,list[k]) #iid_p是行,j是列,list[k]是填充的值

保存: table_xlwt_b.save(fime_path+"033.xls")

最后需要注意,打开原有xls文件,需要保留文档单元格的格式,需要在xlrd打开文件参数添加formatting_info=True,(默认是FALSE),同时,这参数只支持旧版的xls后缀的文件,不支持新版的xlsx后缀的文档,,如果打开xlsx会抛出异常,因此需要另存为xls文档

最后附上代码

#!coding:utf-8

import xlrd

import xlwt

import copy

from xlutils.copy import copy

fime_path="F:\\program_new\\PyCharm Community Edition 2018.2.3\\code_example\\xlwt_xlrd\\code\\"

old_xls = xlrd.open_workbook(fime_path+"022.xls", formatting_info=True)

def read_book():

data =xlrd.open_workbook(fime_path+'011.xls')

#导入表

table = data.sheet_by_index(0)

nrows = table.nrows

ncols = table.ncols

i=0

j=0

list_score = []

score = []

for i in range(1,nrows):

for j in range(6,ncols):

# print("%d%d"%(i,j))

score.append(table.cell(i,j).value)

list_score.append(score)

score=[]

return list_score

def id_position(student_id):

tabel_xlwt_ot = old_xls.sheet_by_index(0)

nrows = tabel_xlwt_ot.nrows

ncols = tabel_xlwt_ot.ncols

for i in range(3,nrows):

now_student_id = int(tabel_xlwt_ot.cell(i,0).value)

now_student_id=str(now_student_id)

if now_student_id==student_id:

return i

def write_book():

table_xlwt_b = copy(old_xls)

table_xlwt = table_xlwt_b.get_sheet(0)

list2=read_book()

print(len(list2),len(list2[1]))

for list in list2:

s_id=list[0]

print(list)

id_p = id_position(s_id)

if id_p is not None:

for (j,k) in zip(range(2,27,3),range(2,11)):

print(k,j)

table_xlwt.write(id_p,j,list[k])

else:

print(u"找不到该学号%s"%s_id)

table_xlwt_b.save(fime_path+"033.xls")

if __name__=="__main__":

write_book()

不用关闭文件,官方没有提供具体的方法关闭打开的xls文件。可以使用 book.release_resources() 释放内存

python excel处理成绩_用Python操作Excel,实现班级成绩的统计相关推荐

  1. pandas写入excel指定行_使用pandas操作excel

    pandas操作excel 最近由于要处理一些excel表格,发现pandas可以免去很多的繁琐的人工劳动,在这里记录一下我所用到的知识. 导入文档 将excel中的工作表导入 filename = ...

  2. java给excel填充数据_使用poi操作Excel的处理工具类自动解析填充数据

    直接传入对应的对象直接生成Excel中的数据集合 Excel模板-表头所在行为1(所在行从一开始) image.png 首先需要导入的Excel表头行中要添加批注,内容为对应JavaBean的属性值. ...

  3. python 拆分excel工作表_使用python拆分excel单元格方法

    在使用python语言时,利用openpyxl库操作excel,可以用来拆分excel单元格.那么,如何拆分单元格呢? 工具/原料 python pycharm openpyxl 截图工具 WPS 笔 ...

  4. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

  5. python读取第二行_使用Python操作Excel(二):读取数据表

    上一节我们提到,使用openpyxl可以方便的对数据表进行操作,例如:抽象Excel数据并存入数据库 将数据库数据导出到Excel 给一个已存在的数据表追加信息 我们还介绍了一些Excel的基本术语, ...

  6. .bin 文件用excel文件打开_用PYTHON读写excel文件

    1 实际案例 问题内容:数据格式为xls,xlsx,是一种常用的电子表格. 小学某班级成绩,记录在excel文件中: 姓名 语文 数学 外语 李磊 95 99 96 韩梅 98 100 93 张峰 9 ...

  7. python可以用于excel计算吗_你好Python!再见Excel?

    现在很多行业,都离不开Excel: 做财务的,要用Excel做报表: 做物流的,会用Excel来跟踪订单情况: 做HR的,会用Excel算工资: 做运营的,会用Excel记录数据做分析. 不知道你有没 ...

  8. python 读excel每行替换_Python脚本操作Excel实现批量替换功能

    Python脚本操作Excel实现批量替换功能 大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换. 使用的工具 Openpyxl,一个处理excel的python库,处理exce ...

  9. 随机数写excel java代码_基于python实现在excel中读取与生成随机数写入excel中

    搜索热词 具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩. 首先要用到的数据库有:xlwt,xlr ...

  10. python怎么用excel-Python使用xlwt模块操作Excel的方法详解

    本文实例讲述了Python使用xlwt模块操作Excel的方法.分享给大家供大家参考,具体如下: 部分摘自官网文档. 该模块安装很简单 $ pip install xlwt 先来个简单的例子: #!/ ...

最新文章

  1. rtmp 时间戳问题
  2. 获取地址栏URL中参数, getQuerySting()方法
  3. 【牛客161 - A】字符串(尺取法,桶标记法)
  4. java后端模拟http请求_Http请求后端
  5. 新乡学院2019计算机报名,新乡学院2019年招生章程
  6. Mybatis的SQL注入
  7. shell脚本执行时报“bad interpreter: Text file busy“的解决方法
  8. pidstat_Linux使用Pidstat命令查看进程状态信息
  9. monaco-editor浏览器中的网页代码编辑器在项目中集成
  10. C语言自学之路十一(详解C语言操作符一)
  11. 引导工业物联网变革 中国占据有利位置
  12. PS抠发丝技巧 「选择并遮住…」
  13. sql语句(SQL SERVER)
  14. 鼠标划过显示鼠标移出隐藏效果
  15. Symbian S60 5th 切换程序UI方向为横屏或竖屏
  16. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法
  17. 神经网络计算相似度,神经网络对比
  18. leo谈谈写简历之基础篇
  19. MATLAB面板数据空间计量模型估计代码④
  20. 回溯算法——n皇后问题

热门文章

  1. 杭电ACM基础题(2096、2097、2098、2099、2101、2103、2106、2107、2109、2113)
  2. 查找两个数储存在二进制中相同的个数
  3. Oracle 游标遍历 显式游标 静态游标 OPEN v_cur(); WHILE v_cur%FOUND LOOP; LOOP FETCH v_cur INTO v_row
  4. 仓库管理(库存系统模块)
  5. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第三课
  6. 股市风云:价值成长投资 稳健赢利之道
  7. 唯快不破:redis源码剖析04-sds动态字符串
  8. 学习阶段路线已备好,Python入门—进阶—爬虫—算法,带你进阶
  9. 信号量集(主要是AND信号量)
  10. new和delete与内存分配