欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)報(bào)表自動(dòng)化詳解

 更新時(shí)間:2017年11月16日 11:26:37   作者:果7  
這篇文章主要介紹了python實(shí)現(xiàn)報(bào)表自動(dòng)化詳解,涉及python讀,寫excel—xlwt常用功能,xlutils 常用功能,xlwt寫Excel時(shí)公式的應(yīng)用等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。

本篇文章將介紹:

xlwt 常用功能
xlrd 常用功能
xlutils 常用功能
xlwt寫Excel時(shí)公式的應(yīng)用
xlwt寫入特定目錄(路徑設(shè)置)

xlwt Python語言中,寫入Excel文件的擴(kuò)展工具??梢詫?shí)現(xiàn)指定表單、指定單元格的寫入。支持excel03版到excel2013版。使用時(shí)請確保已經(jīng)安裝python環(huán)境

xlrd Python語言中,讀取Excel的擴(kuò)展工具。可以實(shí)現(xiàn)指定表單、指定單元格的讀取。使用時(shí)請確保已經(jīng)安裝python環(huán)境。

NOTICE:

xlwt對Excel只能進(jìn)行只寫操作
xrrd對Excel只能進(jìn)行只讀操作
此外,還有xlutils.copy可以實(shí)現(xiàn)Excel的復(fù)制再編輯。

1.python寫excel — xlwt常用功能

A.準(zhǔn)備工作

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

import xlwt # 寫

B.基礎(chǔ)教程

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

f = xlwt.Workbook() # 創(chuàng)建工作簿
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
#一個(gè)excel表格中可以添加多個(gè)sheet

往sheet中寫入內(nèi)容: sheet.write函數(shù)可以傳三個(gè)參數(shù)
第i(參數(shù)1)第j(參數(shù)2)列存入內(nèi)容(參數(shù)3)

sheet1.write(i, j, '第i行第j列存放此內(nèi)容', style)
# 這條語句實(shí)現(xiàn)的功能就是往第i行第j列存第三個(gè)參數(shù)的內(nèi)容,第四個(gè)參數(shù)是樣式(如字體,背景),可以不傳第四個(gè)參數(shù)。

合并單元格并寫入內(nèi)容:

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

最后使用f.save(‘demo')
就可以把f保存到excel了
C.實(shí)戰(zhàn)

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

#coding=utf-8
import xlwt

f = xlwt.Workbook() # 創(chuàng)建工作簿
sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True)
sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True)

f.save('xlwt_tutorial')

效果如下,發(fā)現(xiàn)表格xlwt_tutorial中有兩個(gè)sheet。

我們開始往sheet中寫入內(nèi)容,不傳入style參數(shù)

先只使用write函數(shù)

#coding=utf-8
import xlwt

f = xlwt.Workbook() # 創(chuàng)建工作簿
sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True)
sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True)

row = 0
temp = [u'姓名',u'年齡',u'學(xué)校',u'專業(yè)']
for pos,v in enumerate(temp):
 sheet1.write(row,pos,v)
row += 1
sheet1.write(row,0,u'葡萄')
sheet1.write(row,1,18)
sheet1.write(row,2,u'北京電影學(xué)院')
row += 1
sheet1.write(row,0,u'椰子')
sheet1.write(row,1,20)
sheet1.write(row,2,u'帝國國王科技大學(xué)')

f.save('xlwt_tutorial')

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

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

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

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

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

2.pythonxd讀excel —xlrd常用功能

A.準(zhǔn)備工作

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

import xlrd # 讀

B.基礎(chǔ)教程&實(shí)戰(zhàn)

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

#coding=utf-8

import xlrd
import uniout

f = xlrd.open_workbook(r'xlwt_tutorial')
print f.sheet_names()

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

得到表格里的所有的sheet

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

得到sheet中的內(nèi)容

f = xlrd.open_workbook(r'xlwt_tutorial')
sheet1 = f.sheet_by_index(0) #打開第一個(gè)sheet
sheet2 = f.sheet_by_name(u'小葡萄') #打開名字為小葡萄的sheet

#輸出sheet的名稱,行數(shù),列數(shù)
print sheet1.name,sheet1.nrows,sheet1.ncols
print sheet2.name,sheet2.nrows,sheet2.ncols

輸出為:
葡小萄 3 4
小葡萄 0 0
.

print sheet1.row_values(1) #獲取第二行內(nèi)容
print sheet1.col_values(2) #獲取第三列內(nèi)容

輸出為:
[u'葡萄', 18.0, u'北京電影學(xué)院', u'漢語言文學(xué)']
[u'學(xué)校', u'北京電影學(xué)院', u'帝國國王科技大學(xué)']
.

# 獲取單元格內(nèi)容
print sheet1.cell(1,0).value

# 獲取單元格內(nèi)容的數(shù)據(jù)類型
print sheet1.cell(1,1).ctype

#ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

輸出為:
葡萄
2

3.xlutils 常用功能

A.準(zhǔn)備工作

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

import xlutils 

B.xlutils中copy功能

我們可能會(huì)遇到一個(gè)問題,想對一個(gè)存儲(chǔ)好的Excel進(jìn)行編輯。
但是xlrd是只讀模式,不能進(jìn)行編寫。
而xlwt是只寫模式,不能讀入Excel文件進(jìn)行編輯。
我們可以采用xlrd打開一個(gè)文檔,后采用xlutils中copy功能把文檔拷貝,然后進(jìn)行編輯即可。

import xlrd
from xlutils.copy import copy

f = xlrd.open_workbook(r'xlwt_tutorial')
wb = copy(f) # 將f拷貝到wb

sheet1 = wb.get_sheet(0) # 打開sheet
print sheet1.name
sheet1.write(3,0,'change')

wb.save('xlwt_tutorial')

輸出為:
葡小萄
輸出的表格已經(jīng)改變。

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

4.xlwt寫Excel時(shí)公式的應(yīng)用

我們寫用xlwt寫一個(gè)表格

#coding=utf-8
import xlwt

f = xlwt.Workbook() # 創(chuàng)建工作簿
sheet1 = f.add_sheet(u'得分統(tǒng)計(jì)', 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'得分統(tǒng)計(jì)')
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('得分統(tǒng)計(jì)')

打開表格為:

我們現(xiàn)在想做的是統(tǒng)計(jì)grape的總分和monkey的總分:
在f.save之前加入代碼:

sheet1.write(5,0,u'總分統(tǒng)計(jì)')
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))

輸出為:
B2+B3+B4+B5
C2+C3+C4+C5
打開表格為:

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

由于代碼分層的緣故,使代碼整體框架優(yōu)美。
我們需要把文件寫入到特定目錄下。
但是由于xlwt中沒有直接寫入到特定目錄的函數(shù)。
因此使用shutil.move函數(shù)來把文件MOV到特定目錄下:

#coding=utf-8
import xlwt
import os
import shutil

path = '../sheet/'
isExists = os.path.exists(path) # 判斷目錄是否存在

if not isExists: # 如果目錄不存在,新建目錄
 os.makedirs(path)

f = xlwt.Workbook() # 創(chuàng)建工作簿
sheet1 = f.add_sheet(u'得分統(tǒng)計(jì)', 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'得分統(tǒng)計(jì)')
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'總分統(tǒng)計(jì)')
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('得分統(tǒng)計(jì)')
shutil.move(u'得分統(tǒng)計(jì)', path)

效果圖:

總結(jié)

以上就是本文關(guān)于python實(shí)現(xiàn)報(bào)表自動(dòng)化詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

MySQL數(shù)據(jù)庫設(shè)計(jì)之利用Python操作Schema方法詳解

Python文件的讀寫和異常代碼示例

python中使用xlrd、xlwt操作excel表格詳解

如有不足之處,歡迎留言指出。

相關(guān)文章

  • Python中property屬性實(shí)例解析

    Python中property屬性實(shí)例解析

    這篇文章主要介紹了Python中property屬性實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • OpenCV圖像的幾何變換處理方法詳解

    OpenCV圖像的幾何變換處理方法詳解

    這篇文章主要給大家介紹了關(guān)于OpenCV圖像的幾何變換處理的相關(guān)資料,圖像的幾何變換是指將一幅圖像映射到另一幅圖像內(nèi),有縮放、翻轉(zhuǎn)、仿射變換、透視、重映射等操作,需要的朋友可以參考下
    2024-03-03
  • django框架實(shí)現(xiàn)模板中獲取request 的各種信息示例

    django框架實(shí)現(xiàn)模板中獲取request 的各種信息示例

    這篇文章主要介紹了django框架實(shí)現(xiàn)模板中獲取request 的各種信息,結(jié)合實(shí)例形式分析了Django框架模板直接獲取request信息的相關(guān)配置與操作技巧,需要的朋友可以參考下
    2019-07-07
  • python3批量刪除豆瓣分組下的好友的實(shí)現(xiàn)代碼

    python3批量刪除豆瓣分組下的好友的實(shí)現(xiàn)代碼

    下面小編就為大家?guī)硪黄猵ython3批量刪除豆瓣分組下的好友的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 查看jupyter notebook每個(gè)單元格運(yùn)行時(shí)間實(shí)例

    查看jupyter notebook每個(gè)單元格運(yùn)行時(shí)間實(shí)例

    這篇文章主要介紹了查看jupyter notebook每個(gè)單元格運(yùn)行時(shí)間實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比

    關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比

    這篇文章主要介紹了關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Python里隱藏的“禪”

    Python里隱藏的“禪”

    這篇文章主要介紹了IT柏拉圖翻譯的python的lib目錄下this.py文件中的一首詩,蘊(yùn)含了Python程序設(shè)計(jì)中很多哲理性的規(guī)律,需要的朋友可以參考下
    2014-06-06
  • python如何將兩個(gè)txt文件內(nèi)容合并

    python如何將兩個(gè)txt文件內(nèi)容合并

    這篇文章主要為大家詳細(xì)介紹了python如何將兩個(gè)txt文件內(nèi)容合并,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 離線安裝Pyecharts的步驟以及依賴包流程

    離線安裝Pyecharts的步驟以及依賴包流程

    這篇文章主要介紹了離線安裝Pyecharts的步驟以及依賴包流程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-03-03
  • matplotlib之Pyplot模塊繪制三維散點(diǎn)圖使用顏色表示數(shù)值大小

    matplotlib之Pyplot模塊繪制三維散點(diǎn)圖使用顏色表示數(shù)值大小

    在撰寫論文時(shí)常常會(huì)用到matplotlib來繪制三維散點(diǎn)圖,下面這篇文章主要給大家介紹了關(guān)于matplotlib之Pyplot模塊繪制三維散點(diǎn)圖使用顏色表示數(shù)值大小的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論