用python在excel中讀取與產生隨機數寫入excel中

來源:互聯網
上載者:User

標籤:xlsx   學生   學習   image   姓名   color   而不是   好的   檔案   

今天是我第一次發部落格,就關於python在excel中的應用作為我的第一篇吧。

具體要求是:在一份已知的excel表格中讀取學生的學號與姓名,再將這些資料放到新的excel表中的第一列與第二列,最後再產生隨機數作為學生的考試成績。

首先要用到的資料庫有:xlwt,xlrd,random這三個資料庫。

命令如下:

import xlwt

import xlrd

import random

現有一份表格內容如:

現在我們需要提取這其中的B1—C14。

(提示:在對這份試算表進行操作的時候,要使用到這個試算表的地址,即表格的儲存位置。)

excel=xlrd.open_workbook(G:\python\建立檔案夾\表1.xlsx‘)                                     #開啟並讀取表格

sheet=excel.sheets()[0]                                                                                                 #在原表1中提取第一頁中的資料。對excel進行處理時,行列頁都是從0開始進行計算
wb=xlwt.Workbook()                                                                                                     #創立一個新的excel表格
ws =wb.add_sheet(‘成績單‘)                                                                                       #第一頁命名為成績單
(如果要進行多頁操作,要將學號姓名放到兩頁excel表格中的話可以如下操作:

ws1=wb.add_sheet(‘1班成績單‘)

ws2=wb.add_sheet(‘2班成績單‘)

建立兩個list:

a=[]

b=[]

(這兩個list是用來臨時存放學號與姓名的)

for i in range (1,14):                                           #在大二下學期15級成績匯總.xlsx表中提取出姓名與學號
      a .append(sheet.row_values(i,1,2))                #提取第i行的第1個數,即這個命令抽取的是表中的學號列
      b .append(sheet.row_values(i,2,3))                #提取第i行的第2個數,即這個命令抽取的是表中的姓名列

在此特比注意:excel中行與列均是從0開始計算的,即表中第1行第1列在進行處理運行時為第0行第0列,表中第2行第2列在進行處理運行時為第1行第1列。表中sheet也是從0開始算起。

解釋一下: a .append(sheet.row_values(i,1,2))在經過幾次錯誤後我發現,i是指第i行,1,2這兩個是一段範圍。即取的是第1個值,按照上面注意的說,就是表中第二個框格的值。

如果對此有疑問可以試一下將1,2修改一個值進行嘗試。

for n in range(13):                                                       #將學號與姓名寫入建立的表格中,並寫在第1頁,人數為13人。
      ws.write(n,0,a[n][0])
      ws.write(n,1,b[n][0])

提醒:為什麼這裡要用a[n][0]而不是a[n]?這個是我自己水平有限制的原因。因為在提取表中資料放入a,b兩個list中他們的形式是:a=[[111],[112],[113]……]的形式,對於這一點的解決方案我還沒想出來,因此只能靠a[n][0]這樣的形式來解決。因為在寫入新的表格過程中不能將list整個放入框格中,只能放入文本或者其他框格允許的格式。如果你們有什麼比較好的方法可以提出來我們一起交流學習,感激不盡。

for q in range(13):                                                         #對1班所有人的成績進行隨機抽取資料
      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資環1,2班地理資訊系統實習成績.xls‘)                      #將建立的表格儲存為‘15資環1,2班地理資訊系統實習成績.xls‘檔案

以下代碼是由兩個班的資料進行運算。

原來的表格為:

 1 import xlwt                #引入xlwt資料庫用來將資料寫入excel文檔中 2 import xlrd                #引入xlrd資料庫用來從excel中讀取資料 3 import random              #引入random資料庫給出隨機數 4  5 excel=xlrd.open_workbook(‘G:\python\建立檔案夾\表1.xlsx‘)                 #從一個已有學號與姓名的excel表格中提取出對應的學號和姓名 6  7 sheet=excel.sheets()[0] 8 wb=xlwt.Workbook()                                    #創立一個新的excel表格 9 ws1=wb.add_sheet(‘1班成績單‘)                          #第一頁命名為1班成績單10 ws2=wb.add_sheet(‘2班成績單‘)                          #第一頁命名為2班成績單11 12 13 a1=[]                                                 #表1中的學號列14 a2=[]                                                 #表2中的學號列15 b1=[]                                                 #表1中的姓名列16 b2=[]                                                 #表2中的姓名列17 18 for i in range (1,14):                                #表1.xlsx表中提取出1班的姓名與學號19       a1.append(sheet.row_values(i,1,2))20       b1.append(sheet.row_values(i,2,3))21 22       23 for j in range (14,33):                               #在表1.xlsx表中提取出1班的姓名與學號24       a2.append(sheet.row_values(j,1,2))25       b2.append(sheet.row_values(j,2,3))26       27 for n in range(13):                                   #將1班學號與姓名寫入建立的表格中,並寫在第1頁.1班人數為13人28       ws1.write(n,0,a1[n][0])29       ws1.write(n,1,b1[n][0])30 for m in range(19):                                   #將2班學號與姓名寫入建立的表格中,並寫在第2頁.2班人數為19人31       ws2.write(m,0,a2[m][0])32       ws2.write(m,1,b2[m][0])33 34 for q in range(13):                                   #對1班所有人的成績進行隨機抽取資料35       ran=random.randint(60,91)                       #分數為60-90之間36       if ran<=70:37             ws1.write(q,2,‘及格({0})‘.format(ran))     #以下表示在各分數段的等級38       if ran>70 and ran<=80:39             ws1.write(q,2,‘中等({0})‘.format(ran))40       if ran>80 and ran<=90:41             ws1.write(q,2,‘良好({0})‘.format(ran))42 43 for d in range(19):                                    #對2班所有人的成績進行隨機抽取資料44       ran=random.randint(60,91)45       if ran<=70:46             ws2.write(d,2,‘及格({0})‘.format(ran))47       if ran>70 and ran<=80:48             ws2.write(d,2,‘中等({0})‘.format(ran))49       if ran>80 and ran<=90:50             ws2.write(d,2,‘良好({0})‘.format(ran))51 52       53 54 wb.save(‘15資環1,2班地理資訊系統實習成績.xls‘)            #將建立的表格儲存為‘15資環1,2班地理資訊系統實習成績.xls‘檔案55       

 

結果如下:

 

用python在excel中讀取與產生隨機數寫入excel中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.