網(wǎng)站首頁 編程語言 正文
前言
本文對Python 自動化操作Excel并生成圖表,做了詳細的分析和說明
我們先來看一下python中能操作Excel的常用庫對比
1.xlswriter庫
XlsxWriter是一個用來寫Excel2007和xlsx文件格式的python模塊。它可以用來寫文本、數(shù)字、公式并支持單元格格式化、圖片、圖表、文檔配置、自動過濾等特性
優(yōu)點:功能更多、文檔高保真、擴展格式類型、更快并可配置
缺點:不能用來讀取和修改excel文件
官方文檔:xlsxwriter.readthedocs.io/
2.生成折線圖
# -*- coding:utf-8 -*- import xlsxwriter # 創(chuàng)建一個excel workbook = xlsxwriter.Workbook("chart_line.xlsx") # 創(chuàng)建一個sheet worksheet = workbook.add_worksheet() # worksheet = workbook.add_worksheet("bug_analysis") # 自定義樣式,加粗 bold = workbook.add_format({'bold': 1}) # --------1、準備數(shù)據(jù)并寫入excel--------------- # 向excel中寫入數(shù)據(jù),建立圖標時要用到 headings = ['Number', 'testA', 'testB'] data = [ ['2017-9-1', '2017-9-2', '2017-9-3', '2017-9-4', '2017-9-5', '2017-9-6'], [10, 40, 50, 20, 10, 50], [30, 60, 70, 50, 40, 30], ] # 寫入表頭 worksheet.write_row('A1', headings, bold) # 寫入數(shù)據(jù) worksheet.write_column('A2', data[0]) worksheet.write_column('B2', data[1]) worksheet.write_column('C2', data[2]) # --------2、生成圖表并插入到excel--------------- # 創(chuàng)建一個柱狀圖(line chart) chart_col = workbook.add_chart({'type': 'line'}) # 配置第一個系列數(shù)據(jù) chart_col.add_series({ # 這里的sheet1是默認的值,因為我們在新建sheet時沒有指定sheet名 # 如果我們新建sheet時設置了sheet名,這里就要設置成相應的值 'name': '=Sheet1!$B$1', 'categories': '=Sheet1!$A$2:$A$7', 'values': '=Sheet1!$B$2:$B$7', 'line': {'color': 'red'}, }) # 配置第二個系列數(shù)據(jù) chart_col.add_series({ 'name': '=Sheet1!$C$1', 'categories': '=Sheet1!$A$2:$A$7', 'values': '=Sheet1!$C$2:$C$7', 'line': {'color': 'yellow'}, }) # 配置第二個系列數(shù)據(jù)(用了另一種語法) # chart_col.add_series({ # 'name': ['Sheet1', 0, 2], # 'categories': ['Sheet1', 1, 0, 6, 0], # 'values': ['Sheet1', 1, 2, 6, 2], # 'line': {'color': 'yellow'}, # }) # 設置圖表的title 和 x,y軸信息 chart_col.set_title({'name': 'The xxx site Bug Analysis'}) chart_col.set_x_axis({'name': 'Test number'}) chart_col.set_y_axis({'name': 'Sample length (mm)'}) # 設置圖表的風格 chart_col.set_style(1) # 把圖表插入到worksheet并設置偏移 worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10}) workbook.close()
3.生成柱狀圖
# -*- coding:utf-8 -*- import xlsxwriter # 創(chuàng)建一個excel workbook = xlsxwriter.Workbook("chart_column.xlsx") # 創(chuàng)建一個sheet worksheet = workbook.add_worksheet() # worksheet = workbook.add_worksheet("bug_analysis") # 自定義樣式,加粗 bold = workbook.add_format({'bold': 1}) # --------1、準備數(shù)據(jù)并寫入excel--------------- # 向excel中寫入數(shù)據(jù),建立圖標時要用到 headings = ['Number', 'testA', 'testB'] data = [ ['2017-9-1', '2017-9-2', '2017-9-3', '2017-9-4', '2017-9-5', '2017-9-6'], [10, 40, 50, 20, 10, 50], [30, 60, 70, 50, 40, 30], ] # 寫入表頭 worksheet.write_row('A1', headings, bold) # 寫入數(shù)據(jù) worksheet.write_column('A2', data[0]) worksheet.write_column('B2', data[1]) worksheet.write_column('C2', data[2]) # --------2、生成圖表并插入到excel--------------- # 創(chuàng)建一個柱狀圖(column chart) chart_col = workbook.add_chart({'type': 'column'}) # 配置第一個系列數(shù)據(jù) chart_col.add_series({ # 這里的sheet1是默認的值,因為我們在新建sheet時沒有指定sheet名 # 如果我們新建sheet時設置了sheet名,這里就要設置成相應的值 'name': '=Sheet1!$B$1', 'categories': '=Sheet1!$A$2:$A$7', 'values': '=Sheet1!$B$2:$B$7', 'line': {'color': 'red'}, }) # 配置第二個系列數(shù)據(jù)(用了另一種語法) chart_col.add_series({ 'name': '=Sheet1!$C$1', 'categories': '=Sheet1!$A$2:$A$7', 'values': '=Sheet1!$C$2:$C$7', 'line': {'color': 'yellow'}, }) # 配置第二個系列數(shù)據(jù)(用了另一種語法) # chart_col.add_series({ # 'name': ['Sheet1', 0, 2], # 'categories': ['Sheet1', 1, 0, 6, 0], # 'values': ['Sheet1', 1, 2, 6, 2], # 'line': {'color': 'yellow'}, # }) # 設置圖表的title 和 x,y軸信息 chart_col.set_title({'name': 'The xxx site Bug Analysis'}) chart_col.set_x_axis({'name': 'Test number'}) chart_col.set_y_axis({'name': 'Sample length (mm)'}) # 設置圖表的風格 chart_col.set_style(1) # 把圖表插入到worksheet以及偏移 worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10}) workbook.close()
4.生成餅圖
# -*- coding:utf-8 -*- import xlsxwriter # 創(chuàng)建一個excel workbook = xlsxwriter.Workbook("chart_pie.xlsx") # 創(chuàng)建一個sheet worksheet = workbook.add_worksheet() # 自定義樣式,加粗 bold = workbook.add_format({'bold': 1}) # --------1、準備數(shù)據(jù)并寫入excel--------------- # 向excel中寫入數(shù)據(jù),建立圖標時要用到 data = [ ['closed', 'active', 'reopen', 'NT'], [1012, 109, 123, 131], ] # 寫入數(shù)據(jù) worksheet.write_row('A1', data[0], bold) worksheet.write_row('A2', data[1]) # --------2、生成圖表并插入到excel--------------- # 創(chuàng)建一個柱狀圖(pie chart) chart_col = workbook.add_chart({'type': 'pie'}) # 配置第一個系列數(shù)據(jù) chart_col.add_series({ 'name': 'Bug Analysis', 'categories': '=Sheet1!$A$1:$D$1', 'values': '=Sheet1!$A$2:$D$2', 'points': [ {'fill': {'color': '#00CD00'}}, {'fill': {'color': 'red'}}, {'fill': {'color': 'yellow'}}, {'fill': {'color': 'gray'}}, ], }) # 設置圖表的title 和 x,y軸信息 chart_col.set_title({'name': 'Bug Analysis'}) # 設置圖表的風格 chart_col.set_style(10) # 把圖表插入到worksheet以及偏移 worksheet.insert_chart('B10', chart_col, {'x_offset': 25, 'y_offset': 10}) workbook.close()
5.實戰(zhàn)拓展
xlswriter新建并寫入Excel
# 3.6.2 xlswriter新建并寫入Excel def fun3_6_2(): # 創(chuàng)建Exce并添加sheet workbook = xlsxwriter.Workbook('demo.xlsx') worksheet = workbook.add_worksheet() # 設置列寬 worksheet.set_column('A:A', 20) # 設置格式 bold = workbook.add_format({'bold': True}) # 添加文字內容 worksheet.write('A1', 'Hello') # 按格式添加內容 worksheet.write('A2', 'World', bold) # 寫一些數(shù)字 worksheet.write(2, 0, 123) worksheet.write(3, 0, 123.456) # 添加圖片 worksheet.insert_image('B5', 'demo.png') workbook.close()
原文鏈接:https://blog.csdn.net/weixin_41645135/article/details/123161007
相關推薦
- 2022-05-12 C++線程安全的隊列你了解嘛_C 語言
- 2022-09-26 go使用makefile腳本編譯應用的方法小結_Golang
- 2022-05-05 RabbitMQ的Web管理與監(jiān)控簡介_web2.0
- 2022-08-17 VMWare虛擬機為Windows?Server?2008設置靜態(tài)IP的方法_VMware
- 2022-07-10 springboot 將logback日志根據(jù)不同類輸入到不同路徑下
- 2023-04-02 使用Pytorch如何完成多分類問題_python
- 2022-12-05 python實現(xiàn)兩字符串映射_python
- 2022-05-26 pandas進行數(shù)據(jù)輸入和輸出的方法詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支