基于python實(shí)現(xiàn)在excel中讀取與生成隨機(jī)數(shù)寫入excel中
具體要求是:在一份已知的excel表格中讀取學(xué)生的學(xué)號(hào)與姓名,再將這些數(shù)據(jù)放到新的excel表中的第一列與第二列,最后再生成隨機(jī)數(shù)作為學(xué)生的考試成績(jī)。
首先要用到的數(shù)據(jù)庫(kù)有:xlwt,xlrd,random這三個(gè)數(shù)據(jù)庫(kù)。
命令如下:
import xlwt
import xlrd
import random
現(xiàn)有一份表格內(nèi)容如下圖:
現(xiàn)在我們需要提取這其中的B1—C14。
(提示:在對(duì)這份電子表格進(jìn)行操作的時(shí)候,要使用到這個(gè)電子表格的地址,即表格的儲(chǔ)存位置。) excel=xlrd.open_workbook(G:\python\新建文件夾\表1.xlsx') #打開并讀取表格 sheet=excel.sheets()[0] #在原表1中提取第一頁(yè)中的數(shù)據(jù)。對(duì)excel進(jìn)行處理時(shí),行列頁(yè)都是從0開始進(jìn)行計(jì)算 wb=xlwt.Workbook() #創(chuàng)立一個(gè)新的excel表格 ws =wb.add_sheet('成績(jī)單') #第一頁(yè)命名為成績(jī)單 (如果要進(jìn)行多頁(yè)操作,要將學(xué)號(hào)姓名放到兩頁(yè)excel表格中的話可以如下操作: ws1=wb.add_sheet('1班成績(jī)單') ws2=wb.add_sheet('2班成績(jī)單') )
創(chuàng)建兩個(gè)list:
a=[] b=[] (這兩個(gè)list是用來(lái)臨時(shí)存放學(xué)號(hào)與姓名的) for i in range (1,14): #在大二下學(xué)期15級(jí)成績(jī)匯總.xlsx表中提取出姓名與學(xué)號(hào) a .append(sheet.row_values(i,1,2)) #提取第i行的第1個(gè)數(shù),即這個(gè)命令抽取的是表中的學(xué)號(hào)列 b .append(sheet.row_values(i,2,3)) #提取第i行的第2個(gè)數(shù),即這個(gè)命令抽取的是表中的姓名列
在此特比注意:excel中行與列均是從0開始計(jì)算的,即表中第1行第1列在進(jìn)行處理運(yùn)行時(shí)為第0行第0列,表中第2行第2列在進(jìn)行處理運(yùn)行時(shí)為第1行第1列。表中sheet也是從0開始算起。
解釋一下: a .append(sheet.row_values(i,1,2))在經(jīng)過(guò)幾次錯(cuò)誤后我發(fā)現(xiàn),i是指第i行, 1,2 這兩個(gè)是一段范圍。即取的是第1個(gè)值,按照上面注意的說(shuō),就是表中第二個(gè)框格的值。
如果對(duì)此有疑問(wèn)可以試一下將 1,2 修改一個(gè)值進(jìn)行嘗試。
for n in range(13): #將學(xué)號(hào)與姓名寫入新建的表格中,并寫在第1頁(yè),人數(shù)為13人。 ws.write(n,0,a[n][0]) ws.write(n,1,b[n][0])
提醒:為什么這里要用a[n][0]而不是a[n]?這個(gè)是我自己水平有限制的原因。因?yàn)樵谔崛”碇袛?shù)據(jù)放入a,b兩個(gè)list中他們的形式是:a=[[111],[112],[113]……]的形式,對(duì)于這一點(diǎn)的解決方法我還沒(méi)想出來(lái),因此只能靠a[n][0]這樣的形式來(lái)解決。因?yàn)樵趯懭胄碌谋砀襁^(guò)程中不能將list整個(gè)放入框格中,只能放入文本或者其他框格允許的格式。如果你們有什么比較好的方法可以提出來(lái)我們一起交流學(xué)習(xí),感激不盡。
for q in range(13): #對(duì)1班所有人的成績(jī)進(jìn)行隨機(jī)抽取數(shù)據(jù) ran=random.randint(60,91) if ran<=70: ws1.write(q,2,'及格({0})'.format(ran)) if ran>70 and ran<=80: ws1.write(q,2,'中等({0})'.format(ran)) if ran>80 and ran<=90: ws1.write(q,2,'良好({0})'.format(ran)) wb.save('15資環(huán)1,2班地理信息系統(tǒng)實(shí)習(xí)成績(jī).xls') #將新建的表格保存為'15資環(huán)1,2班地理信息系統(tǒng)實(shí)習(xí)成績(jī).xls'文件
以下代碼是由兩個(gè)班的數(shù)據(jù)進(jìn)行運(yùn)算。
原來(lái)的表格為:
import xlwt #引入xlwt數(shù)據(jù)庫(kù)用來(lái)將數(shù)據(jù)寫入excel文檔中 import xlrd #引入xlrd數(shù)據(jù)庫(kù)用來(lái)從excel中讀取數(shù)據(jù) import random #引入random數(shù)據(jù)庫(kù)給出隨機(jī)數(shù) excel=xlrd.open_workbook('G:\python\新建文件夾\表1.xlsx') #從一個(gè)已有學(xué)號(hào)與姓名的excel表格中提取出對(duì)應(yīng)的學(xué)號(hào)和姓名 sheet=excel.sheets()[0] wb=xlwt.Workbook() #創(chuàng)立一個(gè)新的excel表格 ws1=wb.add_sheet('1班成績(jī)單') #第一頁(yè)命名為1班成績(jī)單 ws2=wb.add_sheet('2班成績(jī)單') #第一頁(yè)命名為2班成績(jī)單 a1=[] #表1中的學(xué)號(hào)列 a2=[] #表2中的學(xué)號(hào)列 b1=[] #表1中的姓名列 b2=[] #表2中的姓名列 for i in range (1,14): #表1.xlsx表中提取出1班的姓名與學(xué)號(hào) a1.append(sheet.row_values(i,1,2)) b1.append(sheet.row_values(i,2,3)) for j in range (14,33): #在表1.xlsx表中提取出1班的姓名與學(xué)號(hào) a2.append(sheet.row_values(j,1,2)) b2.append(sheet.row_values(j,2,3)) for n in range(13): #將1班學(xué)號(hào)與姓名寫入新建的表格中,并寫在第1頁(yè).1班人數(shù)為13人 ws1.write(n,0,a1[n][0]) ws1.write(n,1,b1[n][0]) for m in range(19): #將2班學(xué)號(hào)與姓名寫入新建的表格中,并寫在第2頁(yè).2班人數(shù)為19人 ws2.write(m,0,a2[m][0]) ws2.write(m,1,b2[m][0]) for q in range(13): #對(duì)1班所有人的成績(jī)進(jìn)行隨機(jī)抽取數(shù)據(jù) ran=random.randint(60,91) #分?jǐn)?shù)為60-90之間 if ran<=70: ws1.write(q,2,'及格({0})'.format(ran)) #以下表示在各分?jǐn)?shù)段的等級(jí) if ran>70 and ran<=80: ws1.write(q,2,'中等({0})'.format(ran)) if ran>80 and ran<=90: ws1.write(q,2,'良好({0})'.format(ran)) for d in range(19): #對(duì)2班所有人的成績(jī)進(jìn)行隨機(jī)抽取數(shù)據(jù) ran=random.randint(60,91) if ran<=70: ws2.write(d,2,'及格({0})'.format(ran)) if ran>70 and ran<=80: ws2.write(d,2,'中等({0})'.format(ran)) if ran>80 and ran<=90: ws2.write(d,2,'良好({0})'.format(ran))
wb.save('15資環(huán)1,2班地理信息系統(tǒng)實(shí)習(xí)成績(jī).xls') #將新建的表格保存為'15資環(huán)1,2班地理信息系統(tǒng)實(shí)習(xí)成績(jī).xls'文件
結(jié)果如下:
總結(jié)
以上所述是小編給大家介紹的基于python實(shí)現(xiàn)在excel中讀取與生成隨機(jī)數(shù)寫入excel中,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Python讀取txt內(nèi)容寫入xls格式excel中的方法
- python讀取excel指定列數(shù)據(jù)并寫入到新的excel方法
- python實(shí)戰(zhàn)之實(shí)現(xiàn)excel讀取、統(tǒng)計(jì)、寫入的示例講解
- Python讀取Json字典寫入Excel表格的方法
- python實(shí)現(xiàn)讀取excel寫入mysql的小工具詳解
- Python3+Requests+Excel完整接口自動(dòng)化測(cè)試框架的實(shí)現(xiàn)
- 解決python 讀取excel時(shí) 日期變成數(shù)字并加.0的問(wèn)題
- PYTHON如何讀取和寫入EXCEL里面的數(shù)據(jù)
相關(guān)文章
使用python讀取.text文件特定行的數(shù)據(jù)方法
今天小編就為大家分享一篇使用python讀取.text文件特定行的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python使用Turtle圖形函數(shù)畫圖顏色填充實(shí)例
這篇文章主要介紹了Python使用Turtle圖形函數(shù)畫圖顏色填充實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08python 讀取txt中每行數(shù)據(jù),并且保存到excel中的實(shí)例
下面小編就為大家分享一篇python 讀取txt中每行數(shù)據(jù),并且保存到excel中的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python基于stuck實(shí)現(xiàn)scoket文件傳輸
這篇文章主要介紹了Python基于stuck實(shí)現(xiàn)scoket文件傳輸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞小游戲
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10Python 實(shí)現(xiàn)國(guó)產(chǎn)SM3加密算法的示例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)國(guó)產(chǎn)SM3加密算法的示例代碼,幫助大家更好的理解和學(xué)習(xí)密碼學(xué),感興趣的朋友可以了解下2020-09-09python實(shí)現(xiàn)Windows電腦定時(shí)關(guān)機(jī)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Windows電腦定時(shí)關(guān)機(jī)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06matplotlib.pyplot.matshow 矩陣可視化實(shí)例
這篇文章主要介紹了matplotlib.pyplot.matshow 矩陣可視化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06