python操作excel让工作自动化


Posted in Python onAugust 09, 2019

某局某领导给了3只excel文件,一只里面有4个sheet需要处理,一个sheet有250+列,算下来总共有3000+列需要手动反复插入、删除列、拷贝、求和,所以给了4天的时间要完成。

我不愿意做大量简单而且又是重复性工作,看了看3只表格的格式基本一样,于是我用python写了30行代码完成了这个“艰巨”任务。

0x01

用python操作excel需要安装xlrd、xlwt(或者其他的模块也行)。

读取excel文件:workbook = xlrd.open_workbook('filename.xlsx')

获取所有表名:sheet_names = workbook.sheet_names()

通过索引顺序获取一个工作表:sheet0 = workbook.sheets()[0] || sheet1 = workbook.sheet_by_index(1)

通过名称获取一个工作表:sheet3= data.sheet_by_name(u'sheetname')

获取表的行、列大小:rows = sheet.nrows || cols = sheet.ncols

获取指定行、列的值:col0_value = sheet.col_valsue(0) || row0_value = sheet.row_values(0)

创建工作对象:wk = xlwt.Workbook(encoding='utf-8')

添加sheet对象:sheet0 = wk.add_sheet(sheetname,cell_overwrite=True)

将值写入单元格:sheet0.write(row,col,value)

保存文件:wk.save('filename.xls')

0x02

# coding=utf-8
import xlrd
import xlwt
 
workbook = xlrd.open_workbook('2014年排放量.xlsx')
sheet_names = workbook.sheet_names()
 
 
#通过索引顺序获取一个工作表
sheet0 = workbook.sheets()[0]
sheet1 = workbook.sheet_by_index(1)
sheet2 = workbook.sheet_by_index(2)
sheet3 = workbook.sheet_by_index(3)
sheet4 = workbook.sheet_by_index(4)
sheet5 = workbook.sheet_by_index(5)
sheet6 = workbook.sheet_by_index(6)
sheet7 = workbook.sheet_by_index(7)
sheet8 = workbook.sheet_by_index(8)
#通过名称获取一个工作表
#table = data.sheet_by_name(u'Sheet1')
 
#获取多少行、列
sht0_rows = sheet0.nrows
sht0_cols = sheet0.ncols
 
#获取指定单元格的值
temp = sheet0.cell(0,2)
 
#获取指定行、列的值
temp_col0 = sheet0.col_values(0)
temp_row0 = sheet0.row_values(0)
temp_col1 = sheet0.col_values(1)
temp_row1 = sheet0.row_values(1)
 
#需要204个单元格 一共tb0_rows个 减去前两个
 
'''
for i in range(204/6):#循环34次
 for j in temp_row:
  j[2:8]
'''
 
 
#print(tb0_rows,tb0_cols,temp,temp_row,temp_row[2:8],temp_col)
 
#取选定工作范围
#print(temp_row[2:206])
 
wk = xlwt.Workbook(encoding='utf-8')
wk_lst = []#创建sheet列表
for shtname in sheet_names:
 #print(shtname)
 wk_lst.append(wk.add_sheet(shtname,cell_overwrite_ok=True))
#print(len(wk_lst))
 
'''测试插入表格
for c in range(len(temp_col0)):
 wk_lst[0].write(c,0,temp_col0[c])
 #print(temp_col[c])
'''
 
#需要读的sheet列表
xlrd_sheet_list = [sheet0,sheet1,sheet2,sheet3]
 
for tm in range(len(wk_lst)):
 if tm<4:
  '''1. 创建样表'''
  for x in range(2):
   #print('----------x:',x)
   temp_col = sheet0.col_values(x)
   for c in range(len(temp_col)):
    #print('--------c:',c)
    #print(temp_col[c])
    wk_lst[tm].write(c,x,temp_col[c])
  temp_row = sheet0.row_values(0)
  for r in range(len(temp_row)-2):
   #print(tm,len(temp_row))
   wk_lst[tm].write(0,r+2,temp_row[r+2])
  
  '''2. 写入工作区域'''
  for r in range(2,13):#创建工作行
   tmp_row = xlrd_sheet_list[tm].row_values(r)
   w = tmp_row[2:206] # 切片获取该行工作列
   #print(len(w) / 6)
   x = 0
   for i in range(int(len(w) / 6)):
    sum_pf = round(w[0 + x] + w[1 + x] + w[2 + x] + w[3 + x] + w[4 + x] + w[5 + x], 2)
    wk_lst[tm].write(r,2+x,sum_pf)
    print(sum_pf)
    x += 6
   print("----------------------------------------r:",r,2+x,sum_pf)
  #for i in range(2,13):
  # print(i)
  
wk.save('nb.xls')
 
'''#测试创建excel文件
wkt = xlwt.Workbook()
ws = wkt.add_sheet('CO')
ws.write(0,0,'1')
wkt.save('fuck.xls')
'''
 
'''
#临时注释 一会儿放开
for r in range(2,13):#创建工作行
 tmp_row = sheet0.row_values(r)
 w = tmp_row[2:206] # 切片获取该行工作列
 #print(len(w) / 6)
 x = 0
 y = 0
 for i in range(int(len(w) / 6)):
  #wk_lst[0].write(2+)
  print(round(w[0 + x] + w[1 + x] + w[2 + x] + w[3 + x] + w[4 + x] + w[5 + x], 2))
  x += 6
 print("----------------------------------------",r)
'''
 
'''#测试切片 相加
w = temp_row[2:206]#切片获取
print(len(w)/6)
x=0
for i in range(int(len(w)/6)):
 print(round(w[0+x]+w[1+x]+w[2+x]+w[3+x]+w[4+x]+w[5+x],2))
 x+=6
'''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python编写爬虫小程序
May 14 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python删除过期log文件操作实例解析
Jan 31 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
Python猴子补丁知识点总结
Jan 05 Python
django admin 添加自定义链接方式
Mar 11 Python
Python通过Pillow实现图片对比
Apr 29 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
python自动生成sql语句的脚本
Feb 24 Python
python笔记_将循环内容在一行输出的方法
Aug 08 #Python
python中的列表与元组的使用
Aug 08 #Python
详解python中的数据类型和控制流
Aug 08 #Python
python爬虫selenium和phantomJs使用方法解析
Aug 08 #Python
Python2和3字符编码的区别知识点整理
Aug 08 #Python
Python编程中类与类的关系详解
Aug 08 #Python
python os.fork() 循环输出方法
Aug 08 #Python
You might like
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
原生js实现日历效果
2020/03/02 Javascript
Python实现的生成格雷码功能示例
2018/01/24 Python
查看django版本的方法分享
2018/05/14 Python
Python中交换两个元素的实现方法
2018/06/29 Python
python标识符命名规范原理解析
2020/01/10 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
python和php哪个容易学
2020/06/19 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
乱丢垃圾袋检讨书
2014/10/08 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
员工家属慰问信
2015/03/24 职场文书
考试后的感想
2015/08/07 职场文书
经典祝酒词大全
2015/08/12 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
python中的plt.cm.Paired用法说明
2021/05/31 Python
Python多线程 Queue 模块常见用法
2021/07/04 Python
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python