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代码解决RenderView窗口not found问题
Aug 28 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python中内建模块collections如何使用
May 27 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
opencv实现图像平移效果
Mar 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
Smarty Foreach 使用说明
2010/03/23 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
Python3字符串学习教程
2015/08/20 Python
Python文件操作基本流程代码实例
2017/12/11 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
Python如何进行时间处理
2020/08/06 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
中间件分为哪几类
2016/09/18 面试题
行政助理岗位职责范文
2013/12/03 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
成绩单家长评语大全
2014/04/16 职场文书
一年级小学生评语
2014/04/22 职场文书
中学生励志演讲稿
2014/04/26 职场文书
团队精神口号
2014/06/06 职场文书
运动会拉拉队口号
2014/06/09 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
大学军训的体会
2014/11/08 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
Python面向对象之成员相关知识总结
2021/06/24 Python