使用Python与openpyxl进行表格处理(一)——读取数据
来源:互联网 发布:躬匠精神知乎 编辑:程序博客网 时间:2024/06/01 08:10
虽然现在的工作跟编程已经没有关系,但是曾经学过的东西也可以为我所用,运用到自己的目前工作岗位中,提高工作效率。
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据。Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也就是xlsx系列,如果要处理以前的2003的表格(xls),那么则要用另外的库。如果只是要进行表格数据读取和进行简单的写数据的话,推荐使用openpyxl。下篇会介绍到另外一个操作表格文档的库,叫做xlsxwriter,这是一个专门写表格的库,在写数据和进行表格画图方面比较强大(不能读取和修改表格),因为这次分析数据最后需要进行绘图展示(openpyxl虽然也能作图,但是功能有限),所以也会用到这个库。
更多关于Python操作excel的库,请参考这个网站http://www.python-excel.org/(需翻墙)
对于学习openpyxl,参考官方文档基本就够了,另外也找到一个比较好的学习文章,一个老外写的,看完操作openpyxl就不难了——教程请猛击这里
介绍下自己需要处理的表格情况,这是一个关于酬金的表格,每月都有,它的格式都是固定的,所以完全可以利用Python写一个脚本,来实现自己的需求,这样一来,每月只需敲击一个命令行,就能生成自己想要的表格,节约不少时间!~因为酬金分为很多大项,大项中又有很多小项,而我要做的就是把大项中的小项进行金额汇总,然后在写入一个新的表格,表格中是每个大项汇总的数据,以此生成我们需要进行绘图的数据。
这里直接粘贴源代码,因为可能涉及敏感信息,故有XXXX出现以代替原始注释,图片还有马赛克出现:
from openpyxl import Workbookfrom openpyxl import load_workbookwb = load_workbook("C:/Users/Administrator/Desktop/酬金.xlsx")ws = wb.get_sheet_by_name('酬金明细')ws_rows_len = len(ws.rows) #行数ws_columns_len = len(ws.columns) #列数#xxxxxxxshop_name_column = 5#xxxxxuser_start = 8user_end = 23#xxxxxterminal_start = 24terminal_end = 35#xxxxxinfomation_start = 36infomation_end = 42#xxxxgroup_start = 43group_end = 45#xxxxcommission_start = 46commission_end = 60#xxxxstimulate_start = 61stimulate_end = 65#xxxxnet_start = 66net_end = 67#xxxxxxxagreement_start = 68agreement_end = 70#数据有效行从第四行开始 start_row = 4temp_data = []for row in range(start_row, ws_rows_len+1): t = 0 temp_data.append(ws.cell(row=row,column=shop_name_column).value) #计算xxxxxx总金额 for column in range(user_start,user_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxx总金额 for column in range(terminal_start,terminal_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxx发展总金额 for column in range(infomation_start,infomation_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxx总金额 for column in range(group_start,group_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxxx总金额 for column in range(commission_start,commission_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxxx总金额 for column in range(stimulate_start,stimulate_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxxx总金额 for column in range(net_start,net_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t) t = 0 #计算xxxxxxxx总金额 for column in range(agreement_start,agreement_end+1): t += ws.cell(row=row,column=column).value temp_data.append(t)#以上代码为获取酬金原始数据进行汇总#下面将汇总得到的数据插入到一个新的数据表中reward_ws_hearder = ['xxxx','xxxxx','xxxx','xxxxx','xxxxxx','xxxx','xxxx','xxxx','xxxx']reward_ws = wb.create_sheet(title='酬金分析')reward_ws.append(reward_ws_hearder)start_list = 0list_step = 9end_list = start_list + list_stepfor i in range(0,ws_rows_len-start_row+1): reward_ws.append(temp_data[start_list:end_list]) start_list += list_step end_list = start_list + list_stepwb.save("C:/Users/Administrator/Desktop/酬金1.xlsx") #另存为另一个表,防止意外破坏原始数据。
代码写得有点乱,仅供学习openpyxl参考。通过上述的代码,实现了一个新表存放了汇总的数据(原始数据有很多列,现在汇总到一起了)
被马赛克涂抹的左边A列是名称,首行则是业务列别。可见数据则是汇总金额。如果我不用脚本处理的话,每次利用excel进行手动操作,那么需要对每个大项的小项进行汇总,然后用手动粘贴到一个新表中(自己的EXCEL不是很熟,然后对每一行都要进行一个绘图操作,算下来花的时间很多哦)而现在,只是花了时间写了一段代码,然后以后的以后,只要表格格式不变,我只需要运行py文件即可!~花的时间就1s吧。
下篇会介绍xlsxwriter这个库,因为我写到这里的时候想用openpyxl来进行绘图,发现openpyxl实现不了自己的需求,于是找到了这个写数据和画图都很强的xlsxwriter!而且文档也更加完善,有很多例子!!!
通过这次这个例子,自己以后也会更加学习如何善于发现,善于思考,如何运用自己以前所学的知识将它运用新的岗位上。
- 使用Python与openpyxl进行表格处理(一)——读取数据
- 使用Python处理excel表格(openpyxl)教程
- 使用Python处理excel表格(openpyxl)及表格中的中文处理
- 【5】python读取excel表格(from openpyxl import load_workbook)
- python使用openpyxl库修改excel表格数据
- python读取excel文件中所有sheet表格:openpyxl模块(二)
- GPS数据读取与处理(一)
- Python(9)萌新也能看的懂——如何用openpyxl处理excel
- 使用Python对EXCEL表格进行处理
- python处理表格(一)
- python合并多个excel表格:openpyxl模块(三)
- python 利用openpyxl包处理excel数据并作图
- OpenPyXL的使用教程(一)
- 用python + openpyxl处理excel(07+)多文档合并+表格合并 + 一些中文处理的技巧
- 使用openpyxl读取xlsx文件
- python读取excel表格——xlrd的使用
- Windows下使用Python读取Excel表格数据
- python访问excel基本用法:openpyxl模块(一)
- php请求超过30秒解决方法
- MVC 模式与 Ajax/API/RIA 模式
- Vuforia SDK----增强现实非凡体验
- 常量指针,指针常量,野指针
- ubuntu13.04,64位安装mit-scheme_9.1.1
- 使用Python与openpyxl进行表格处理(一)——读取数据
- JNI 的初步了解
- addActionError() 与addFieldError (),addActionMessage()比较
- linux命令:mkdir
- Unity bundle的制作和使用
- 创业失败
- UVALive 3942Remember the Word(字典树 + 简单dp)
- 常用DDR和NandFlash型号
- VTD-XML——解析xml的最强武器