python-Excel自动化|xlrd xlwt实现按照指令复制指定行数
学习了编程知识之后,总是时不时脑洞大开想在word里直接写代码、写页面,一串代码敲完才发现,所谓word,是很难向我们提供一些人类高质量的编译器的。众所周知,想要用代码操作office三件套,可以利用原生的VBA进行开发,也可以利用python和相关的库实现操作。
????虽然有过一些vb知识,但学得不是很深,找寻大量资料后仍然不知道该怎么调用,所以觉得VBA不是很好用;另一方面是Word VBA参考资料较少,大部分是Excel VBA,所以仍然打算从Python入手进行自动化操作。
使用的库:xlrd xlwt
pip install xlrd
pip install xlwt
主要的思路:
1.读取Excel保存为xl,通过名称读取指定表格;
2.用计数器i读取行数据,用x判断新表格中的行数够了没;
3.保存文件。
import xlrd
import xlwt
#Excel文件需要为xls格式
#读取'你的文件名.xls',存为xl
xl=xlrd.open_workbook('你的文件名.xls',on_demand=True)
#读取'Sheet1表格名'的内容,存为mysheet
mysheet = xl.sheet_by_name('Sheet1')
#可用于读取表头、具体表格数值
#print(xl.sheet_names())
#print(mysheet.cell_value(1,0))
#读取行数nrows,列数ncols
nrows = mysheet.nrows
ncols = mysheet.ncols
print('共有',str(nrows),'行,',str(ncols),'列。')
f=xlwt.Workbook()
sheet1=f.add_sheet(u'sheet1',cell_overwrite_ok=True)
'''在需要复制指定行数的表格里,选取一列用于填写每行需要重复的数量,
将这一列数据复制到txt中,使用查找替换将alt+enter转换为,
ncriminals=[需要复制的行数数组]
这个软件一开始是用于openlaw的统计,根据犯罪人数为每个犯罪嫌疑人单独创建一行,便于统计犯罪人的信息
也可用于其他需要重复行的Excel工作,比较常见的应用是需要把一行中的n个内容分别分到n行中去
有相同需求的可以先复制含内容的行、存储为txt,并将分隔符查找替换为alt+enter,
之后再使用本程序修改参数后对行进行复制,再将txt复制粘贴进对应列
'''
#计数器
i=0
x=0
repeat=0
ncriminals =[14,11,11,10,9,7,7,7]
#A【读取整个表格】
while i < len(ncriminals)-1: #i是读取的行数
#读取第22列V列犯罪人数,转换整数类型
n_criminals = ncriminals[i]
#B------以下用于repeat的计算------
repeat = 0 #repeat重新计数
while repeat < n_criminals:#不够,重复做一遍
#C-------以下为读取每一条的数据-------
j = 0 #原表格读(i,j) ↓
y = 0 #新表格写(x,y) √
while j < 52:# 依次读(i,0~52)
values = mysheet.cell_value(i,j)
sheet1.write(x,y,values) #写一个
y = y+1 #右移写的位置
j = j+1 #右移读的位置
repeat=repeat+1
x = x+1
i=i+1 #读下一行直到读完
f.save('重复指定行数.xls')
之前写的时候只是为了迎合一下群众的呼声,最终python立大功,帮忙统计了一些信息。统计结束之后几乎没有再想起来这个程序,没想到实习的时候Excel含量这么高……做表格对????来说可能是一种解脱吧,毕竟总比整理案卷好多了orz
简而言之发现这个程序还是挺实用的,所以写成文章再整理一下思路。
一些问题的思考:
- 如果有显示文件可能不安全是正常的,直接打开就好。但发现有些时候里面的似乎不是纯文本,导致Excel运行耗能很大的样子,容易崩溃,小伙伴们可以复制到新的xlsx里,选择粘贴为纯文本,基本上可以解决这一问题。
- 为什么不直接读取excel列里面的指定行数:之前试过了,一直数据类型不对,跑不了,改了很多次也不行,索性上手动了。有成功读取运行的小伙伴可以分享一下这部分的代码√
总体来说一开始写得很艰难,一方面vba试了无数次终于放弃了,另一方面python不知道用什么库比较好。开始之后的话,主要问题就是编程基础弱,经常+1-1的弄不灵清,慢慢画图改bug调试才最终搞定。整个程序除了在自动化复制Excel指定行有一定实用性之外,个人感觉比较有参考价值的是包含了xlrd和xlwt从读取文件、操作数据、保存文件的过程,展示了一些变量的获取方法,虽然整个文件没有没有写成函数(老不专业了????),但觉得还是可以给想用Python操作Excel的小伙伴们一些参考,希望大家能喜欢。
上一篇: freemarker简单使用
下一篇: 四种单例模式(java)