python excel 自动化

某局某领导给了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

'''

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

(0)

相关推荐

  • 【每周一坑】杨辉三角形

    杨辉三角形,也称帕斯卡三角,其定义为:顶端是 1,视为(row0).第1行(row1)(1&1)两个1,这两个1是由他们上头左右两数之和 (不在三角形内的数视为0).依此类推产生第2行(row ...

  • 使用openpyxl读写excel文件

    读写excel是日常工作中的高频操作,openpyxl模块支持对后缀为xlsx的excel文件进行读写,注意,它不支持后缀为xls的文件. 所有模块对excel进行操作,都会按照如下所示的层级进行处理 ...

  • 【python】解析Excel中使用xlrd库、xlwt库操作,读取excel进阶完整脚本实例(四)

    本次主要通过脚本展现使用xlrd库.xlwt库的完整操作,对象是比较常见的表格,通过这两个脚本的学习,实现对Excel的进阶操作. 首先,我们定义一个表格example_excel.xls,如图所示: ...

  • python 读写excel工具openPyXL

    openPyXL 是excel读写python包,支持 Excel 2010 xlsx/xlsm/xltx/xltm 格式文件.参见:https://openpyxl.readthedocs.io/e ...

  • python接口自动化22-下载文件(excel)

    前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...

  • Python for Excel自动化库

    excelperfect 标签:工具库 要使用Python操控Excel,就需要使用一些相应的库,下面列出了一些常用的,和大家一起参考. openpyxl库 官网: https://openpyxl. ...

  • python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来后面的自动化都离不开它. 一.环境安装 1.用pip安装requests模块 >>p ...

  • python接口自动化2-发送post请求

    前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实 ...

  • python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>im ...

  • python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  • python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  • python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  • python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱, ...