基于python實現(xiàn)在excel中讀取與生成隨機數(shù)寫入excel中
具體要求是:在一份已知的excel表格中讀取學生的學號與姓名,再將這些數(shù)據(jù)放到新的excel表中的第一列與第二列,最后再生成隨機數(shù)作為學生的考試成績。
首先要用到的數(shù)據(jù)庫有:xlwt,xlrd,random這三個數(shù)據(jù)庫。
命令如下:
import xlwt
import xlrd
import random
現(xiàn)有一份表格內(nèi)容如下圖:

現(xiàn)在我們需要提取這其中的B1—C14。
(提示:在對這份電子表格進行操作的時候,要使用到這個電子表格的地址,即表格的儲存位置。)
excel=xlrd.open_workbook(G:\python\新建文件夾\表1.xlsx') #打開并讀取表格
sheet=excel.sheets()[0] #在原表1中提取第一頁中的數(shù)據(jù)。對excel進行處理時,行列頁都是從0開始進行計算
wb=xlwt.Workbook() #創(chuàng)立一個新的excel表格
ws =wb.add_sheet('成績單') #第一頁命名為成績單
(如果要進行多頁操作,要將學號姓名放到兩頁excel表格中的話可以如下操作:
ws1=wb.add_sheet('1班成績單')
ws2=wb.add_sheet('2班成績單')
)
創(chuàng)建兩個list:
a=[] b=[] (這兩個list是用來臨時存放學號與姓名的) for i in range (1,14): #在大二下學期15級成績匯總.xlsx表中提取出姓名與學號 a .append(sheet.row_values(i,1,2)) #提取第i行的第1個數(shù),即這個命令抽取的是表中的學號列 b .append(sheet.row_values(i,2,3)) #提取第i行的第2個數(shù),即這個命令抽取的是表中的姓名列
在此特比注意:excel中行與列均是從0開始計算的,即表中第1行第1列在進行處理運行時為第0行第0列,表中第2行第2列在進行處理運行時為第1行第1列。表中sheet也是從0開始算起。
解釋一下: a .append(sheet.row_values(i,1,2))在經(jīng)過幾次錯誤后我發(fā)現(xiàn),i是指第i行, 1,2 這兩個是一段范圍。即取的是第1個值,按照上面注意的說,就是表中第二個框格的值。
如果對此有疑問可以試一下將 1,2 修改一個值進行嘗試。
for n in range(13): #將學號與姓名寫入新建的表格中,并寫在第1頁,人數(shù)為13人。 ws.write(n,0,a[n][0]) ws.write(n,1,b[n][0])
提醒:為什么這里要用a[n][0]而不是a[n]?這個是我自己水平有限制的原因。因為在提取表中數(shù)據(jù)放入a,b兩個list中他們的形式是:a=[[111],[112],[113]……]的形式,對于這一點的解決方法我還沒想出來,因此只能靠a[n][0]這樣的形式來解決。因為在寫入新的表格過程中不能將list整個放入框格中,只能放入文本或者其他框格允許的格式。如果你們有什么比較好的方法可以提出來我們一起交流學習,感激不盡。
for q in range(13): #對1班所有人的成績進行隨機抽取數(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)實習成績.xls') #將新建的表格保存為'15資環(huán)1,2班地理信息系統(tǒng)實習成績.xls'文件
以下代碼是由兩個班的數(shù)據(jù)進行運算。
原來的表格為:

import xlwt #引入xlwt數(shù)據(jù)庫用來將數(shù)據(jù)寫入excel文檔中
import xlrd #引入xlrd數(shù)據(jù)庫用來從excel中讀取數(shù)據(jù)
import random #引入random數(shù)據(jù)庫給出隨機數(shù)
excel=xlrd.open_workbook('G:\python\新建文件夾\表1.xlsx') #從一個已有學號與姓名的excel表格中提取出對應的學號和姓名
sheet=excel.sheets()[0]
wb=xlwt.Workbook() #創(chuàng)立一個新的excel表格
ws1=wb.add_sheet('1班成績單') #第一頁命名為1班成績單
ws2=wb.add_sheet('2班成績單') #第一頁命名為2班成績單
a1=[] #表1中的學號列
a2=[] #表2中的學號列
b1=[] #表1中的姓名列
b2=[] #表2中的姓名列
for i in range (1,14): #表1.xlsx表中提取出1班的姓名與學號
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班的姓名與學號
a2.append(sheet.row_values(j,1,2))
b2.append(sheet.row_values(j,2,3))
for n in range(13): #將1班學號與姓名寫入新建的表格中,并寫在第1頁.1班人數(shù)為13人
ws1.write(n,0,a1[n][0])
ws1.write(n,1,b1[n][0])
for m in range(19): #將2班學號與姓名寫入新建的表格中,并寫在第2頁.2班人數(shù)為19人
ws2.write(m,0,a2[m][0])
ws2.write(m,1,b2[m][0])
for q in range(13): #對1班所有人的成績進行隨機抽取數(shù)據(jù)
ran=random.randint(60,91) #分數(shù)為60-90之間
if ran<=70:
ws1.write(q,2,'及格({0})'.format(ran)) #以下表示在各分數(shù)段的等級
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): #對2班所有人的成績進行隨機抽取數(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)實習成績.xls') #將新建的表格保存為'15資環(huán)1,2班地理信息系統(tǒng)實習成績.xls'文件
結果如下:

總結
以上所述是小編給大家介紹的基于python實現(xiàn)在excel中讀取與生成隨機數(shù)寫入excel中,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
通過Python實現(xiàn)在Word中添加和刪除書簽的操作
在Word中,書簽功能是一個非常實用的工具,它允許用戶快速定位到文檔中的特定位置,無論是進行文檔審閱、編輯還是查找特定信息,書簽都能提供極大的便利,下面將詳細介紹如何通過Python在Word文檔中添加和刪除書簽,需要的朋友可以參考下2024-09-09
Python中flatten( )函數(shù)及函數(shù)用法詳解
flatten是numpy.ndarray.flatten的一個函數(shù),即返回一個一維數(shù)組。這篇文章主要介紹了Python中flatten( )函數(shù),需要的朋友可以參考下2018-11-11
Python在Windows和在Linux下調(diào)用動態(tài)鏈接庫的教程
這篇文章主要介紹了Python在Windows和在Linux下調(diào)用動態(tài)鏈接庫的教程,在進行Python的CS端編程時經(jīng)常需要用到,需要的朋友可以參考下2015-08-08

