python如何實現共享報表系統_使用python來實現報表自動化-阿里云開發者社區

xlwt 常用功能

xlrd 常用功能

xlutils 常用功能

xlwt寫Excel時公式的應用

xlwt寫入特定目錄(路徑設置)

xlwt?Python語言中,寫入Excel文件的擴展工具。可以實現指定表單、指定單元格的寫入。支持excel03版到excel2013版。使用時請確保已經安裝python環境。百度百科

xlrd Python語言中,讀取Excel的擴展工具。可以實現指定表單、指定單元格的讀取。使用時請確保已經安裝python環境。百度百科

NOTICE:

xlwt對Excel只能進行只寫操作

xrrd對Excel只能進行只讀操作

此外,還有xlutils.copy可以實現Excel的復制再編輯。

1.python寫excel — xlwt常用功能

A.準備工作

安裝xlwt?:在終端中輸入pip install xlwt或者easy_install xlwt

引入xlwt包?:

#?寫11

B.基礎教程

新建工作簿&增加sheet: 新建一個工作簿,然后往里添加sheet

f?=?xlwt.Workbook()??#?創建工作簿 sheet1?=?f.add_sheet(u'sheet1',?cell_overwrite_ok=True)#一個excel表格中可以添加多個sheet123123

往sheet中寫入內容: sheet.write函數可以傳三個參數

第i(參數1)第j(參數2)列存入內容(參數3)

。1212

合并單元格并寫入內容:

sheet1.write_merge(x, x + m, y, y + n, '內容', style)# 這條y語句表示將[x:x+m]行[y:y+n]列的矩陣合并成一個單元格。存放第五個參數的內容,同理,style參數可以不傳參1212

最后使用f.save(‘demo’)

就可以把f保存到excel了

C.實戰

我們可以先新建一個工作簿,然后往里添加兩個sheet,然后查看效果

#coding=utf-8import?xlwt f?=?xlwt.Workbook()??#?創建工作簿 sheet1?=?f.add_sheet(u'葡小萄',?cell_overwrite_ok=True) sheet2?=?f.add_sheet(u'小葡萄',?cell_overwrite_ok=True) f.save('xlwt_tutorial')1234567812345678

效果如下,發現表格xlwt_tutorial中有兩個sheet。

05cbc8a095a4ce4ff3cdda8c96df1f91.png

我們開始往sheet中寫入內容,不傳入style參數

先只使用write函數

#coding=utf-8import?xlwt f?=?xlwt.Workbook()??#?創建工作簿sheet1?=?f.add_sheet(u'葡小萄',?cell_overwrite_ok=True) sheet2?=?f.add_sheet(u'小葡萄',?cell_overwrite_ok=True) row?=?0temp?=?[u'姓名',u'年齡',u'學校',u'專業'] for?pos,v?in?enumerate(temp): ????sheet1.write(row,pos,v) row?+=?1sheet1.write(row,0,u'葡萄') sheet1.write(row,1,18) sheet1.write(row,2,u'北京電影學院') row?+=?1sheet1.write(row,0,u'椰子') sheet1.write(row,1,20) sheet1.write(row,2,u'帝國國王科技大學') f.save('xlwt_tutorial')123456789101112131415161718192021123456789101112131415161718192021

效果如下,我們建立了一個3行4列的表格。(write函數行和列值都是從0開始的)

015f7b6d5706ef504961abc8085914d6.png

下面我們使用write_merge函數來合并單元格并寫入

在f.save之前添加一行代碼

sheet1.write_merge(1,2,3,3,u'漢語言文學')11

效果如下,將第2-3行第4列合并

7223b48445c0140ceae5910eba4611aa.png

2.pythonxd讀excel —xlrd常用功能

A.準備工作

安裝xlrd?:在終端中輸入pip install xlrd或者easy_install xlrd

引入xlrd包?:

import?xlrd??#?讀11

B.基礎教程&實戰

打開一個Excel,然后輸出所有sheet的名字

#coding=utf-8import?xlrdimport?uniout f?=?xlrd.open_workbook(r'xlwt_tutorial')print?f.sheet_names()12345671234567

輸出:[u’葡小萄’, u’小葡萄’]

得到表格里的所有的sheet

for?i?in?range(len(f.sheet_names())): ?????sheet1?=?workbook.sheet_by_index(i)1212

得到sheet中的內容

f?=?xlrd.open_workbook(r'xlwt_tutorial') sheet1?=?f.sheet_by_index(0)??#打開第一個sheetsheet2?=?f.sheet_by_name(u'小葡萄')??#打開名字為小葡萄的sheet#輸出sheet的名稱,行數,列數print?sheet1.name,sheet1.nrows,sheet1.ncolsprint?sheet2.name,sheet2.nrows,sheet2.ncols12345671234567

輸出為:

葡小萄 3 4

小葡萄 0 0

.

print?sheet1.row_values(1)??#獲取第二行內容print?sheet1.col_values(2)??#獲取第三列內容1212

輸出為:

[u’葡萄’, 18.0, u’北京電影學院’, u’漢語言文學’]

[u’學校’, u’北京電影學院’, u’帝國國王科技大學’]

.

#?獲取單元格內容print?sheet1.cell(1,0).value#?獲取單元格內容的數據類型print?sheet1.cell(1,1).ctype#ctype?:?0?empty,1?string,?2?number,?3?date,?4?boolean,?5?error12345671234567

輸出為:

葡萄

2

3.xlutils 常用功能

A.準備工作

安裝xlutils?:在終端中輸入pip install xlutils或者easy_install xlutils

引入xlutils包?:

import?xlutils??11

B.xlutils中copy功能

我們可能會遇到一個問題,想對一個存儲好的Excel進行編輯。

但是xlrd是只讀模式,不能進行編寫。

而xlwt是只寫模式,不能讀入Excel文件進行編輯。

我們可以采用xlrd打開一個文檔,后采用xlutils中copy功能把文檔拷貝,然后進行編輯即可。

import?xlrdfrom?xlutils.copy?import?copy f?=?xlrd.open_workbook(r'xlwt_tutorial') wb?=?copy(f)?#?將f拷貝到wbsheet1?=?wb.get_sheet(0)?#?打開sheetprint?sheet1.name sheet1.write(3,0,'change') wb.save('xlwt_tutorial')12345678910111234567891011

輸出為:

葡小萄

輸出的表格已經改變。

0b55b6848ae7de34c27ba5bd02da47d9.png

PS: 可以看到第二行第四列和第三行第四列合并格已經在COPY的時候被毀掉了。

4.xlwt寫Excel時公式的應用

我們寫用xlwt寫一個表格

#coding=utf-8import?xlwt f?=?xlwt.Workbook()??#?創建工作簿sheet1?=?f.add_sheet(u'得分統計',?cell_overwrite_ok=True) mdict?=?{"monkey":{"writing":80,"reading":60,"speaking":70,"listening":60},"grape":{"writing":100,"reading":80,"speaking":70,"listening":60}} sheet1.write(0,0,u'得分統計') sheet1.write(1,0,u'書法得分') sheet1.write(2,0,u'閱讀得分') sheet1.write(3,0,u'演講得分') sheet1.write(4,0,u'聽力得分') temp?=?['writing','reading','speaking','listening']for?pos,name?in?enumerate(mdict): ????sheet1.write(0,pos+1,name)????for?p,v?in?enumerate(temp): ????????sheet1.write(p+1,pos+1,mdict[name][v]) f.save('得分統計')1234567891011121314151617181920212212345678910111213141516171819202122

打開表格為:

6970d9b1bc6164c870e5158ccf98ba7f.png

我們現在想做的是統計grape的總分和monkey的總分:

在f.save之前加入代碼:

sheet1.write(5,0,u'總分統計')for?i?in?range(len(mdict)): ????forstr?=?chr(65+i+1)+'2+'+chr(65+i+1)+'3+'+chr(65+i+1)+'4+'+chr(65+i+1)+'5' ????print?forstr ????sheet1.write(5,i+1,xlwt.Formula(forstr))1234512345

輸出為:

B2+B3+B4+B5

C2+C3+C4+C5

打開表格為:

22f52c3acfc2716f6fac55bbd0a6e597.png

5.xlwt寫入特定目錄(路徑設置)

由于代碼分層的緣故,使代碼整體框架優美。

我們需要把文件寫入到特定目錄下。

但是由于xlwt中沒有直接寫入到特定目錄的函數。

因此使用shutil.move函數來把文件MOV到特定目錄下:

#coding=utf-8import?xlwtimport?osimport?shutil path?=?'../sheet/'isExists?=?os.path.exists(path)?#?判斷目錄是否存在if?not?isExists:???#?如果目錄不存在,新建目錄 ????os.makedirs(path) f?=?xlwt.Workbook()??#?創建工作簿sheet1?=?f.add_sheet(u'得分統計',?cell_overwrite_ok=True) mdict?=?{"monkey":{"writing":80,"reading":60,"speaking":70,"listening":60},"grape":{"writing":100,"reading":80,"speaking":70,"listening":60}} sheet1.write(0,0,u'得分統計') sheet1.write(1,0,u'書法得分') sheet1.write(2,0,u'閱讀得分') sheet1.write(3,0,u'演講得分') sheet1.write(4,0,u'聽力得分') temp?=?['writing','reading','speaking','listening']for?pos,name?in?enumerate(mdict): ????sheet1.write(0,pos+1,name)????for?p,v?in?enumerate(temp): ????????sheet1.write(p+1,pos+1,mdict[name][v]) sheet1.write(5,0,u'總分統計')for?i?in?range(len(mdict)): ????forstr?=?chr(65+i+1)+'2+'+chr(65+i+1)+'3+'+chr(65+i+1)+'4+'+chr(65+i+1)+'5' ????print?forstr ????sheet1.write(5,i+1,xlwt.Formula(forstr)) f.save('得分統計') shutil.move(u'得分統計',?path)1234567891011121314151617181920212223242526272829303132333435363712345678910111213141516171819202122232425262728293031323334353637

效果圖:

34c505c87ba12ed750f072eba24c81af.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

去除inline-block元素間間距的N種方法

這篇文章發布于 2012年04月24日,星期二,22:38,歸類于 css相關。 閱讀 147771 次, 今日 52 次 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p2357 一、現象描述 真正意義上的in…

Docker深入淺出2

Docker系統架構 Docker使用客戶端-服務端(c/s)架構模式,使用遠程api來管理和創建Docker容器。 docker容器通過Docker鏡像來創建。 容器與鏡像的關系類似于面向對象編程中的對象與類的關系 Docker面向對象容器對象鏡像類加速器配置&#xff1a…

mysql安裝包下載密碼_MySQL解壓包的安裝與下載的圖文教程

這篇文章主要為大家詳細介紹了mysql解壓包的安裝基礎教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下由于換了新電腦,所以的環境都要到新電腦去配置。突然發現mysql的配置忘了,然后百度又重新來一遍。特地寫一篇文章記錄一…

php 扒取網頁數據

扒取方法 public function index(){$url http://www.dytt8.net/;// $url Public/txt/movies.txt;$content file_get_contents($url);$content iconv("gb2312", "utf-8//IGNORE",$content);$reg "|<div class\"co_content2\">(.*…

多維DP UVA 11552 Fewest Flop

題目傳送門 1 /*2 題意&#xff1a;將子符串分成k組&#xff0c;每組的字符順序任意&#xff0c;問改變后的字符串最少有多少塊3 三維DP&#xff1a;可以知道&#xff0c;每一組的最少塊是確定的&#xff0c;問題就在于組與組之間可能會合并塊&#xff0c;總塊數會-1。…

多表聯合查詢

關聯數據庫字典表的多表聯合查詢 inner join…on 自動連接 需要用到表的所有信息時&#xff0c;可以用以下兩種方法 1) left join…on… 左連接 &#xff08;以左為準&#xff0c;右邊沒有NULL代替&#xff09; 2) right join…on… 右連接&#xff08;以右為準&#xff…

python elasticsearch update_使用python的elasticsearch部分更新

我有以下格式的elasticsearch文檔。我需要部分更新“x”字段并在其中添加python dict。{"_index": "gdata34","_type": "gdat","_id": "328091-72341-118","_version": 1,"_score": 1,"…

32位與64位注冊表

如果32位系統OFP的注冊表路徑是 HKEY_LOCAL_MACHINE\SOFTWARE\Bohemia Interactive\ 那么在64系統里就應該是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Bohemia Interactive\ 多了一級Wow6432Node轉載于:https://www.cnblogs.com/zhang-pengcheng/p/4712135.html

http 請求頭和響應頭

客戶端發送請求過程帶著的數據&#xff1a; 1.請求地址 2.請求方式 3.請求頭 request headers 4.請求參數 https://www.juhe.cn/ 130.... 1a2b....pei 服務端響應給客戶端的信息&#xff1a; 1.響應內容 2.響應報文/響應頭部 response headers a 響應頭 b 響應體 3.http狀…

[算法]-排序算法之希爾排序

希爾排序算法思想 希爾排序的實質就是分組插入排序&#xff0c;該方法又稱縮小增量排序.基本思想是&#xff1a;先將整個待排元素序列分割成若干個子序列&#xff08;由相隔某個“增量”的元素組成的&#xff09;分別進行直接插入排序&#xff0c;然后依次縮減增量再進行排序&a…

python tkinter button顏色變不了_tkinter多按鈕顏色變化

我使用tkinter創建一個8x8按鈕矩陣&#xff0c;當按下單個按鈕時&#xff0c;它會添加到最終列表中(例如finalList((0,0)&#xff0c;(5,7)&#xff0c;(6,6)&#xff0c;…)&#xff0c;允許我快速創建8x8(x&#xff0c;y)坐標圖像。我已經創建了一個帶有按鈕的窗口&#xff0…

應用spss可靠性分析軟件

問卷調查的可靠性分析 一、概念&#xff1a; 信度是指依據測驗工具所得到的結果的一致性或穩定性&#xff0c;反映被測特征真實程度的指標。一般而言&#xff0c;兩次或兩個測驗的結果愈是一致。則誤差愈小&#xff0c;所得的信度愈高&#xff0c;它具有下面特性&#xff1a;1、…

springmvc中的單例問題

1&#xff0c;springmvc實際上是基于一個叫做DispatcherServlet的servlet的。servlet按照以往的學習經驗&#xff0c;他是單事例多線程的。 Servlet生命周期 1.裝載Servlet。這項操作一般是動態執行的。然而&#xff0c;Server通常會提供一個管理的選項&#xff0c;用于在Serve…

設計模式 -- 亨元模式(FlyWeight Pattern)

用來盡可能減少內存使用量&#xff0c;適用于存在大量重復對象的場景&#xff0c;達到對象共享&#xff0c;避免創建過多對象的效果&#xff0c;提升性能&#xff0c;避免內存溢出。 定義&#xff1a; 使用共享對象有效支持大量細粒度對象。 適用場景&#xff1a; 系統中存在大…

python3.6使用mysql_Python之——Python3.6連接MySQL

只安裝了Python是不能連接數據庫的&#xff0c;還要安裝Python連接MySQL的相關類庫&#xff0c;Python2.7連接MySQL的類庫很多&#xff0c;MySQL官方最新支持的Python為Python3.4.&#xff0c;如下圖所示&#xff1a;那么&#xff0c;在Python3.6上如何實現連接MySQL的功能呢&a…

android解析json

android2.3提供的json解析類 android的json解析部分都在包org.json下&#xff0c;主要有以下幾個類&#xff1a; JSONObject&#xff1a;可以看作是一個json對象 JSONStringer&#xff1a;json文本構建類 JSONArray&#xff1a;可以看作是json的數組 JSONTokener&#xff1a;js…

MVVM模式于MVP模式

MVC、MVP、MVVM這些模式是為了解決開發過程中的實際問題而提出來的&#xff0c;目前作為主流的幾種架構模式而被廣泛使用。 一.MVP模式(Model-View-Presenter):傳統的開發是MVP模式(例如jquery) MVP是把MVC中的Controller換成了Presenter&#xff08;呈現&#xff09;&#xff…

HUNAN 11560 Yangyang loves AC(二分+貪心)

http://acm.hunnu.edu.cn/online/?actionproblem&typeshow&id11560&courseid0 題意&#xff1a;總共有n天,每天yangyang都需要一個快樂值,有m個隊友,每個隊友都會給陽陽一個快樂值(為2的冪),并且只能給一次,如果某一天隊友給的快樂值達到yangyang需要的快樂值那么…

BrowserSync開發利器

2019獨角獸企業重金招聘Python工程師標準>>> 大大節省開發時間。安裝使用簡單。使用步驟&#xff1a; 1、nodejs環境 安裝 2、在項目中使用npm安裝到本項目 3、對要監聽的文件執行響應命令 官網更詳細&#xff1a;http://www.browsersync.cn/#install 原理&#xf…

python字符串解析_Python-字符串解析-正則-re

正則表達式特殊字符序列&#xff0c;匹配檢索和替換文本普通字符 特殊字符 數量&#xff0c;普通字符用來定邊界更改字符思路字符串函數 > 正則 > for循環元字符  匹配一個字符# 元字符大寫&#xff0c;一般都是取小寫的反1. 0~9 整數          \d    …