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快速从注释生成文档的方法
Dec 26 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
python创建子类的方法分析
Nov 28 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
为什么称python为胶水语言
Jun 16 Python
用python读取xlsx文件
Dec 17 Python
python3 删除所有自定义变量的操作
Apr 08 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
php实现统计邮件大小的方法
2013/08/06 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
Yii分页用法实例详解
2014/12/04 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
brook javascript框架介绍
2011/10/10 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python中装饰器高级用法详解
2017/12/25 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
用Python实现职工信息管理系统
2020/12/30 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
恐龙的灭绝教学反思
2014/02/12 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
西安导游词
2015/02/12 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers