麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

使用python來實(shí)現(xiàn)報(bào)表自動化

2024-06-28 16:02:37
字體:
供稿:網(wǎng)友

本文轉(zhuǎn)載于http://blog.csdn.net/coraline_m?viewmode=contents

本篇文章將介紹:

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 # 寫11

B.基礎(chǔ)教程

新建工作簿&增加sheet: 新建一個(gè)工作簿,然后往里添加sheetf = xlwt.Workbook() # 創(chuàng)建工作簿sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)#一個(gè)excel表格中可以添加多個(gè)sheet123123往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ù)。1212合并單元格并寫入內(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ù)可以不傳參1212最后使用f.save(‘demo’) 就可以把f保存到excel了

C.實(shí)戰(zhàn)

我們可以先新建一個(gè)工作簿,然后往里添加兩個(gè)sheet,然后查看效果#coding=utf-8import xlwtf = 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')1234567812345678效果如下,發(fā)現(xiàn)表格xlwt_tutorial中有兩個(gè)sheet。

這里寫圖片描述

我們開始往sheet中寫入內(nèi)容,不傳入style參數(shù) 先只使用write函數(shù)#coding=utf-8import xlwtf = xlwt.Workbook() # 創(chuàng)建工作簿sheet1 = f.add_sheet(u'葡小萄', cell_overwrite_ok=True)sheet2 = f.add_sheet(u'小葡萄', cell_overwrite_ok=True)row = 0temp = [u'姓名',u'年齡',u'學(xué)校',u'專業(yè)']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'北京電影學(xué)院')row += 1sheet1.write(row,0,u'椰子')sheet1.write(row,1,20)sheet1.write(row,2,u'帝國國王科技大學(xué)')f.save('xlwt_tutorial')123456789101112131415161718192021123456789101112131415161718192021效果如下,我們建立了一個(gè)3行4列的表格。(write函數(shù)行和列值都是從0開始的)

這里寫圖片描述

下面我們使用write_merge函數(shù)來合并單元格并寫入 在f.save之前添加一行代碼sheet1.write_merge(1,2,3,3,u'漢語言文學(xué)')11效果如下,將第2-3行第4列合并 這里寫圖片描述

2.pythonxd讀excel —xlrd常用功能

A.準(zhǔn)備工作

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

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

打開一個(gè)Excel,然后輸出所有sheet的名字#coding=utf-8import xlrdimport unioutf = xlrd.open_workbook(r'xlwt_tutorial')PRint f.sheet_names()12345671234567

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

得到表格里的所有的sheetfor i in range(len(f.sheet_names())): sheet1 = workbook.sheet_by_index(i)1212得到sheet中的內(nèi)容f = xlrd.open_workbook(r'xlwt_tutorial')sheet1 = f.sheet_by_index(0) #打開第一個(gè)sheetsheet2 = f.sheet_by_name(u'小葡萄') #打開名字為小葡萄的sheet#輸出sheet的名稱,行數(shù),列數(shù)print sheet1.name,sheet1.nrows,sheet1.ncolsprint sheet2.name,sheet2.nrows,sheet2.ncols12345671234567

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

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

輸出為: [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 error12345671234567

輸出為: 葡萄 2


3.xlutils 常用功能

A.準(zhǔn)備工作

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

B.xlutils中copy功能

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

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

輸出為: 葡小萄 輸出的表格已經(jīng)改變。 這里寫圖片描述PS: 可以看到第二行第四列和第三行第四列合并格已經(jīng)在COPY的時(shí)候被毀掉了。


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

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

#coding=utf-8import xlwtf = 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ì)')1234567891011121314151617181920212212345678910111213141516171819202122

打開表格為: 這里寫圖片描述

我們現(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))1234512345

輸出為: B2+B3+B4+B5 C2+C3+C4+C5 打開表格為: 這里寫圖片描述


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

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

#coding=utf-8import xlwtimport osimport shutilpath = '../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)1234567891011121314151617181920212223242526272829303132333435363712345678910111213141516171819202122232425262728293031323334353637

效果圖: 這里寫圖片描述


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一级免费电影 | 一区二区久久精品66国产精品 | 在线成人影视 | 国内精品久久久久久久久久久久 | 午夜视频在线观看免费视频 | 性生活视频软件 | 亚洲精品动漫在线观看 | 久草视频在线看 | 国产精品欧美日韩一区二区 | 成人黄色短视频在线观看 | 国产精品一区二区羞羞答答 | 中文字幕四区 | 国产精品一区2区3区 | 精品国产一区二区三区四区在线 | 欧美日韩成人一区二区 | 久久精品视频16 | 麻豆视频在线观看免费网站 | 毛片a级毛片免费播放100 | av在线更新 | 一级毛片电影院 | 91精品国产综合久久青草 | 国产无遮挡一区二区三区毛片日本 | 黄色片免费在线播放 | 羞羞答答影院 | 99欧美视频 | 成人性视频欧美一区二区三区 | 少妇一级淫片免费放正片 | 国产精品久久久久久久久久久久午夜 | 九九热九九热 | 欧美日韩亚洲精品一区二区三区 | 91成人一区 | 永久免费黄色片 | 久久露脸国语精品国产91 | www.guochan| 亚洲精品a级 | 久久艹逼 | 日韩毛片一区二区三区 | 日韩精品中文字幕在线播放 | 国产精品成人免费一区久久羞羞 | 成人免费一区二区三区在线观看 | 爽成人777777婷婷 |