python-Excel⾃动化xlrdxlwt实现按照指令复制指定⾏数
办公软件⾃动化可以通过VBA或者python的第三⽅库进⾏。实操时发现VBA⽐较难掌握,python似乎⽤起来更简单,所以采⽤python进⾏。
程序的主要作⽤复制指定⾏数的Excel的⾏数据(也可修改为复制列)
使⽤的库:xlrd xlwt
pip install xlrd
pip install xlwt
主要的思路:
1.读取Excel保存为xl,通过名称读取指定表格;
2.⽤计数器i读取⾏数据,⽤x判断新表格中的⾏数够了没;
3.保存⽂件。
import xlrd
import xlwt
#Excel⽂件需要为xls格式python怎么读取xls文件
#读取'你的⽂件名.xls',存为xl
xl=xlrd.open_workbook('你的⽂件名.xls',on_demand=True)
#读取'Sheet1表格名'的内容,存为mysheet
mysheet = xl.sheet_by_name('Sheet1')
#可⽤于读取表头、具体表格数值
#print(xl.sheet_names())
#ll_value(1,0))
#读取⾏数nrows,列数ncols
nrows = ws
ncols = ls
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 = ll_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的⼩伙伴们⼀些参考,希望⼤家能喜欢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论