通过python中xlrd读取excel表格(xlwt写入excel),xlsxwriter写入excel表格并绘制图形

Posted 彳亍前行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过python中xlrd读取excel表格(xlwt写入excel),xlsxwriter写入excel表格并绘制图形相关的知识,希望对你有一定的参考价值。

 1 import xlrd, xlwt
 2 
 3 #读取excel文件
 4 def read_excel(url):#传入源文件读取路径
 5     # 获取数据
 6     data = xlrd.open_workbook(url)
 7     # 获取sheet
 8     # table = data.sheet_by_name(sheet_name) #通过sheet名称获取sheet数据
 9     table = data.sheet_by_index(0) #通过sheet索引获取sheet数据
10     # 获取总行数
11     nrows = table.nrows
12     # 获取总列数
13     ncols = table.ncols
14     # 获取一个单元格的数值
15     cell_value = table.cell(0, 1).value #获取第0行第1列的值,即 B1 的值
16     print(cell_value)
17     
18 #写入excel文件
19 def write_excel(url, sheet_name, data): #传入文件存储路径、excel的sheet名称、以及要插入的数据
20     #data = ((\'biqi\', 963, 177), (\'editor_Intern1\', 912, 154), (\'editor_Intern10\', 840, 163), (\'editor_Intern11\', 644, 173)) #模板数据
21     myWorkbook = xlwt.Workbook() #创建excel
22     mySheet = myWorkbook.add_sheet(sheet_name) #创建excel中的sheet
23     for i, val in enumerate(data):
24         for j, value in enumerate(val):
25             mySheet.write(i, j, value) #遍历数据插入sheet中
26     myWorkbook.save(url) #将创建的excel保存在该路径下
  1 import xlsxwriter
  2 
  3 #写入excel文件
  4 def write_excel(url): #传入excel存储路径
  5     #将要插入excel并用作绘图的数据
  6     data_all = {\'错误汇总\': {
  7         \'error_summary_header\': [\'账号\', \'姓名\', \'投资评级错误\', \'评级变化错误\', \'股票代码错误\', \'股票名称错误\', \'目标价错误\', \'目标价高错误\', \'净利润错误\',
  8                                  \'归母净利润错误\', \'年份错误\', \'分析师名字错误\', \'邮箱错误\', \'证券职业编码错误\', \'电话错误\', \'记录错误数\', \'错误数(人工)\',
  9                                  \'错误数(研报本身)\', \'错误数(抽查)\', \'总记录数\', \'错误率\', \'研报总数\'],
 10         \'editor_Intern1\': [\'editor_Intern1\', \'editor_Intern1\', 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 912, \'0.22%\',
 11                            223],
 12         \'editor_Intern10\': [\'editor_Intern10\', \'editor_Intern10\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 837, \'0.12%\',
 13                             232],
 14         \'editor_Intern11\': [\'editor_Intern11\', \'editor_Intern11\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 644, \'0.16%\',
 15                             173],
 16         \'editor_Intern12\': [\'editor_Intern12\', \'editor_Intern12\', 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 439, \'0.23%\',
 17                             99],
 18         \'editor_Intern2\': [\'editor_Intern2\', \'editor_Intern2\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1132, \'0.0%\',
 19                            265],
 20         \'editor_Intern3\': [\'editor_Intern3\', \'editor_Intern3\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, \'0.0%\', 280],
 21         \'editor_Intern4\': [\'editor_Intern4\', \'editor_Intern4\', 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1002, \'0.7%\',
 22                            297],
 23         \'editor_Intern5\': [\'editor_Intern5\', \'editor_Intern5\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, \'0.0%\',
 24                            213],
 25         \'editor_Intern6\': [\'editor_Intern6\', \'editor_Intern6\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 778, \'0.0%\',
 26                            200],
 27         \'editor_Intern8\': [\'editor_Intern8\', \'editor_Intern8\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 28         \'editor_Intern9\': [\'editor_Intern9\', \'editor_Intern9\', 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 762, \'0.66%\', -3],
 29         \'editor_Intern13\': [\'editor_Intern13\', \'editor_Intern13\', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, \'0.0%\',
 30                             180],
 31         \'editor_Intern14\': [\'editor_Intern14\', \'editor_Intern14\', 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 2, 0, 0, 10, 0, 0, 0, 467, \'2.14%\',
 32                             102],
 33         \'Total\': [\'Total\', \'合计\', 0, 0, 0, 0, 0, 0, 12, 3, 9, 0, 4, 0, 0, 28, 0, 0, 0, 10102, \'0.28%\', 2595]}}
 34     # 数据表头
 35     error_detail_header = [\'研报_id\', \'账号\', \'投资评级错误\', \'评级变化错误\', \'股票代码错误\', \'股票名称错误\', \'目标价错误\', \'目标价高错误\', \'净利润错误\', \'归母净利润错误\',
 36                            \'年份错误\', \'分析师名字错误\', \'邮箱错误\', \'证券职业编码错误\', \'电话错误\']
 37     #创建excel
 38     myWorkbook = xlsxwriter.Workbook(url)
 39     # 自定义样式
 40     bold = myWorkbook.add_format({
 41         \'font_size\': 10,  # 字体大小
 42         \'bold\': True,  # 是否粗体
 43         \'bg_color\': \'#101010\',  # 表格背景颜色
 44         \'font_color\': \'#FEFEFE\',  # 字体颜色
 45         \'align\': \'center\',  # 居中对齐
 46         \'top\': 2,  # 上边框
 47         \'left\': 2,  # 左边框
 48         \'right\': 2,  # 右边框
 49         \'bottom\': 2  # 底边框
 50     })
 51     for k, v in data_all.items():
 52         if k == \'错误明细\':
 53             mySheet1 = myWorkbook.add_worksheet(k) #创建“错误明细”sheet
 54             for index, header in enumerate(error_detail_header):
 55                 mySheet1.write(0, index, header, bold)
 56             for i, val in enumerate(v):
 57                 i += 1
 58                 for j, value in enumerate(val):
 59                     mySheet1.write(i, j, value, bold) #向第i行第j列插入数据,并使用bold定义的样式
 60         if k == \'错误汇总\':
 61             mySheet2 = myWorkbook.add_worksheet(k)
 62             i = 0
 63             for summary_value in v.values():
 64                 for sum_index, sum_value in enumerate(summary_value):
 65                     mySheet2.write(i, sum_index, sum_value, bold)
 66                 i += 1
 67 
 68     \'\'\'绘制错误数柱状图\'\'\'
 69     # 创建一个柱状图(column chart)
 70     chart_col = myWorkbook.add_chart({\'type\': \'column\'})
 71 
 72     # 图表下方显示数据表格
 73     chart_col.set_table({
 74         \'show_keys\': True
 75     })
 76 
 77     # 配置数据(用了另一种语法)
 78     chart_col.add_series({
 79         \'name\': \'=错误汇总!$P$1\',
 80         \'categories\': \'=错误汇总!$B$2:$B$14\',
 81         \'values\': \'=错误汇总!$P$2:$P$14\',
 82         \'line\': {\'color\': \'#C0504D\'},
 83         \'fill\': {\'color\': \'#C0504D\'},
 84         \'data_labels\': {\'value\': True}, #在图表上显示对应的数据
 85     })
 86 
 87     # # 配置数据
 88     # chart_col.add_series({
 89     #     \'name\': [\'错误汇总\', 0, 2],
 90     #     \'categories\': [\'错误汇总\', 1, 0, 6, 0],
 91     #     \'values\': [\'错误汇总\', 1, 2, 6, 2],
 92     #     \'line\': {\'color\': \'red\'},
 93     # })
 94 
 95     # 设置图表的title 和 x,y轴信息
 96     chart_col.set_title({\'name\': \'记录错误数\'})
 97     chart_col.set_x_axis({\'name\': \'员工\'})
 98     chart_col.set_y_axis({\'name\': \'错误数\'})
 99 
100     # 设置图表的风格
101     chart_col.set_style(10)
102 
103     # 把图表插入到worksheet以及偏移
104     mySheet2.insert_chart(\'A21\', chart_col, {
105         \'x_offset\': 0,
106         \'y_offset\': 0,
107         \'x_scale\':  1.5,
108         \'y_scale\':  1.5,
109     }) #第一个参数为图表插入的起始位置, x_offset、y_offset为偏移量, x_scale、y_scale为缩放比率
110 
111     \'\'\'绘制错误率折线图\'\'\'
112     chart_col1 = myWorkbook.add_chart({\'type\': \'line\'})
113     # 配置数据(用了另一种语法)
114     chart_col1.add_series({
115         \'name\': \'=错误汇总!$U$1\',
116         \'categories\': \'=错误汇总!$B$2:$B$14\',
117         \'values\': \'=错误汇总!$U$2:$U$14\',
118         \'line\': {\'color\': \'#C0504D\'},
119         \'data_labels\': {\'value\': True},
120     })
121 
122     # # 配置数据
123     # chart_col1.add_series({
124     #     \'name\': [\'错误汇总\', 0, 2],
125     #     \'categories\': [\'错误汇总\', 1, 0, 6, 0],
126     #     \'values\': [\'错误汇总\', 1, 2, 6, 2],
127     #     \'line\': {\'color\': \'red\'},
128     # })
129 
130     # 设置图表的title 和 x,y轴信息
131     chart_col1.set_title({\'name\': \'错误率\'})
132     chart_col1.set_x_axis({\'name\': \'员工\'})
133     chart_col1.set_y_axis({\'name\': \'错误数\'})
134 
135     # 设置图表的风格
136     chart_col1.set_style(1)
137 
138     # 将柱状图合并入折线图中
139     # chart_col1.combine(chart_col)
140 
141     mySheet2.insert_chart(\'N21\', chart_col1, {
142         \'x_offset\': 0,
143         \'y_offset\': 0,
144         \'x_scale\': 1.5,
145         \'y_scale\': 1.5,
146     }) #第一个参数为图表插入的起始位置, x_offset、y_offset为偏移量, x_scale、y_scale为缩放比率
147 
148     \'\'\'绘制错误种类饼图\'\'\'
149     # 创建一个柱状图(column chart)
150     chart_col2 = myWorkbook.add_chart({\'type\': \'pie\'})
151     # 配置数据(用了另一种语法)
152     chart_col2.add_series({
153         \'categories\': \'=错误汇总!$C$1:$O$1\',
154         \'values\': \'=错误汇总!$C$15:$O$15\',
155         \'data_labels\': {\'value\': True},
156         \'points\': [
157             {\'fill\': {\'color\': \'#4590A7\'}},
158             {\'fill\': {\'color\': \'#AA4643\'}},
159             {\'fill\': {\'color\': \'#89A54E\'}},
160             {\'fill\': {\'color\': \'#71588F\'}},
161             {\'fill\': {\'color\': \'#4198AF\'}},
162             {\'fill\': {\'color\': \'#DB843D\'}},
163             {\'fill\': {\'color\': \'#93A9CF\'}},
164             {\'fill\': {\'color\': \'#D19392\'}},
165             {\'fill\': {\'color\': \'#B9CD96\'}},
166             {\'fill\': {\'color\': \'#4590A7\'}},
167             {\'fill\': {\'color\': \'#AA4643\'}},
168             {\'fill\': {\'color\': \'#89A54E\'}},
169             {\'fill\': {\'color\': \'#71588F\'}},
170             {\'fill\': {\'color\': \'#4198AF\'}},
171             {\'fill\': {\'color\': \'#DB843D\'}},
172             {\'fill\': {\'color\': \'#93A9CF\'}},
173             {\'fill\': {\'color\': \'#D19392\'}},
174             {\'fill\': {\'color\': \'#B9CD96\'}},
175         ] #饼状图会使用到的色号
176     })
177 
178     # # 配置数据
179     # chart_col.add_series({
180     #     \'name\': [\'错误汇总\', 0, 2],
181     #     \'categories\': [\'错误汇总\', 1, 0, 6, 0],
182     #     \'values\': [\'错

以上是关于通过python中xlrd读取excel表格(xlwt写入excel),xlsxwriter写入excel表格并绘制图形的主要内容,如果未能解决你的问题,请参考以下文章

xlrd实现从excel文件读取数据

python xlrd 读取excel.md

Python操作Excel

Python操作excel表格

python xlrd处理表格常用方法

Python中xlrd常用用法整理