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中的各种装饰器详解
Apr 11 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
python机器学习之神经网络(一)
Dec 20 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
Python离线安装PIL 模块的方法
Jan 08 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Puppeteer使用示例详解
Jun 20 Python
python实现KNN分类算法
Oct 16 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
如何通过命令行进入python
Jul 06 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 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
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
Python下载网络小说实例代码
2018/02/03 Python
python 字典中取值的两种方法小结
2018/08/02 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
中班幼儿评语大全
2014/04/30 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
信仰心得体会
2014/09/05 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
人才市场接收函
2015/01/30 职场文书
活动经费申请报告
2015/05/15 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
Oracle创建只读账号的详细步骤
2021/06/07 Oracle