Python利用xlutils统计excel表格数据

假设有像上这样一个表格,里面装满了各式各样的数据,现在要利用模板对它进行统计每个销售商的一些数据的总和。模板如下:

代码开始:
1 #!usr/bin/python3
2 # -*-coding=utf-8 -*-
3
4 import xlrd
5 import xlwt
6 from xlutils.copy import copy
7
8 xlsx = xlrd.open_workbook('template.xls') #打开数据来源工作簿
9 table = xlsx.sheet_by_index(0) #读取表格索引为0的表
10
11 all_data = [] #此列表用于存储我们需要的在excel中的内容
12
13 #for循环读取表格
14 for n in range(1, table.nrows): #nrows代表excel表格的每一样;从1开始代表忽略表头,也就是从第二行开始
15 company = table.cell(n,1).value #每次循环都读取n+1行第2列的内容并赋值给company
16 price = table.cell(n,3).value #每次循环都读取n+1行第4列的内容并赋值给price
17 weight = table.cell(n,4).value #每次循环都读取n+1行第5列的内容并赋值给weight
18
19 data = {'company':company, 'weight':weight, 'price':price} #用字典存储内容
20 all_data.append(data) #将字典逐一追加到空列表
21
22 #新建空列表用于存储数据
23 #存储销售商张三粮配的数据总重量和总价格
24 a_total_weight = []
25 a_total_price = []
26 #存储销售商李四粮食的数据总重量和总价格
27 b_total_weight = []
28 b_total_price = []
29 #存储销售商王五小麦的数据总质量和总价格
30 c_total_weight = []
31 c_total_price = []
32 #存储销售商赵六麦子专营的数据的总重量和总价格
33 d_total_weight = []
34 d_total_price = []
35
36 #开始循环列表
37 for i in all_data:
38 if i['company'] == "张三粮配":
39 a_total_weight.append(i['weight'])
40 a_total_price.append(i['weight'] * i['price'])
41 if i['company'] == "李四粮食":
42 b_total_weight.append(i['weight'])
43 b_total_price.append(i['weight'] * i['price'])
44 if i['company'] == "王五小麦":
45 c_total_weight.append(i['weight'])
46 c_total_price.append(i['weight'] * i['price'])
47 if i['company'] == "赵六麦子专营":
48 d_total_weight.append(i['weight'])
49 d_total_price.append(i['weight'] * i['price'])
50
51 #选择模板
52 tem_excel = xlrd.open_workbook('countTemplate.xls',formatting_info=True)
53 tem_sheet = tem_excel.sheet_by_index(0)
54
55 #复制模板
56 new_excel = copy(tem_excel)
57 new_sheet.get_sheet(0)
58
59 #添加样式
60 style = xlwt.XFStyle()
61
62 #设置样式字体
63 font = xlwt.Font()
64 font.name = "微软雅黑" #设置字体名称
65 font.bold = True #设置字体加粗
66 font.height = 200 #设置字体大小,字体大小的算法是字体大小乘以20;
67 style.font = font #将字体样式添加到整体样式
68
69 #设置边框样式
70 borders = xlwt.Borders()
71 borders.top = xlwt.Borders.THIN #设置上边框的样式为细线
72 borders.left = xlwt.Borders.THIN #设置左边框的样式为细线
73 borders.bottom = xlwt.Borders.THIN #设置下边框的样式为细线
74 borders.right = xlwt.Borders.THIN #设置右边框的样式为细线
75 style.borders = borders #将边框样式添加到整体样式
76
77 #设置对齐样式
78 alignment = xlwt.Alignment()
79 alignment.horz = xlwt.Alignment.HORZ_CENTER #设置水平对齐样式为居中
80 alignment.vert = xlwt.Alignment.VERT_CENTER #设置垂直对齐样式为居中
81 style.alignment = alignment #加对齐样式添加到总样式
82
83 #开始写入数据
84 new_sheet.write(2,1, len(a_total_weight), style)
85 new_sheet.write(2,2, round(sum(a_total_weight), 2), style)
86 new_sheet.write(2,3, round(sum(a_total_price), 2), style)
87 new_sheet.write(3,1, len(b_total_weight), style)
88 new_sheet.write(3,2, round(sum(b_total_weight), 2), style)
89 new_sheet.write(3,3, round(sum(b_total_price), 2), style)
90 new_sheet.write(4,1, len(c_total_weight), style)
91 new_sheet.write(4,2, round(sum(c_total_weight), 2), style)
92 new_sheet.write(4,3, round(sum(c_total_price), 2), style)
93 new_sheet.write(5,1, len(d_total_weight), style)
94 new_sheet.write(5,2, round(sum(d_total_weight), 2), style)
95 new_sheet.write(5,3, round(sum(d_total_price), 2), style)
96
97 #保存工作簿
98 new_excel.save('results.xls')
最终效果:

总结步骤:
1,先打开要处理的数据表;
2,根据要求读取数据表的内容并别存储;
3,复制模板并存储为新的工作簿;
4,向新的工作簿里写入提取的要求数据;
5,设置样式;
6,保存工作簿。
Python利用xlutils统计excel表格数据的更多相关文章
- Visual Studio 2010利用libxl读写excel表格数据
C++读写数据,一般通过txt文件,但是随着数据量的增大,采集数据时运用excel表格的优势得以逐步体现.本文主要介绍一下运用第三方库libxl,对excel表格数据进行读写.分为三个部分,第一部分是 ...
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- 利用 pandas库读取excel表格数据
利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...
- 利用PHPExcel读取Excel的数据和导出数据到Excel
PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel.也是我们日常开发中,经常会遇到的使用场景.比如有个客户信息表,要批量导出发给同事,我 ...
- 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图
利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import pandas as pdimport matplotlib. ...
- Python将多个excel表格合并为一个表格
Python将多个excel表格合并为一个表格 生活中经常会碰到多个excel表格汇总成一个表格的情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家的结果合并成一个.诸如此类的问题有很多.除 ...
- jxl读取Excel表格数据
调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- JXL读取写入excel表格数据
问题描述: 使用java的jxl包创建.写入excel表格数据 问题解决: (1)说明 (2)写入execel数据 注: 以上是写入数据需要调用的函数接口 注: 具体接口调用过程,如上所示 (3)读取 ...
随机推荐
- LCCUP 2020 秋季编程大赛 补题
果然是力扣杯,难度较于平时周赛提高了不少,个人感觉最后两题并不太容易QAQ LCP 18.早餐组合 #二分思想 题目链接 题意 你获得了每种主食的价格,及每种饮料的价格,你需要选择一份主食和一份饮料, ...
- Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)
题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...
- [Python]环境配置之pip加速
背景 学习 Python 的话,仅掌握标准库是远不够的,有很多好用的第三方库我们也需要用到的,比如,由鼎鼎大名的 K 神开发的爬虫必不可少的 requests 库,一般都是必装的库吧.安装第三方库当然 ...
- MySQL的中的全局锁、表级锁、行锁
MySQL的中的全局锁.表级锁.行锁 学习极客时间-林晓彬老师-MySQL实战45讲 学习整理 全局锁 对整个数据库实例加锁.通过使用Flush tables with read lock (FTWR ...
- 从使用传统Web框架到切换到Spring Boot后的总结
1.前言 其实我接触 Spring Boot 的时间并不长,所以还算一个初学者,这篇文章也算是我对 Spring Boot 学习以及使用过程中的复盘,如果文章出现描述错误或表达不清晰的地方,欢迎大家在 ...
- CoProcessFunction实战三部曲之二:状态处理
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Spring Cloud Alibaba 初体验(三) Nacos 与 Dubbo 集成
一.新建项目 新建项目,只放置接口,用于暴露 Dubbo 服务接口 public interface GreetingService { String greeting(); } 二.provider ...
- activiti笔记
activiti笔记 核心api api介绍 1.ProcessEngine 说明: 1) 在Activiti中最核心的类,其他的类都是由他而来. 2) 产生方式: ProcessEngine pro ...
- 第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问
一. 引言 在<第14.8节 Python中使用BeautifulSoup加载HTML报文>中介绍使用BeautifulSoup的安装.导入和创建对象的过程,本节介绍导入后利用Beauti ...
- 第十二章、Designer中的menu菜单、toolBar工具栏和Action动作
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 Qt Designer中的部件栏并没有菜单.toolBar以及Action相关的部件,仅在 ...