欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python操作excel的方法總結(xlrd、xlwt、openpyxl)

系統 2179 0

前言

在處理excel數據時發現了xlwt的局限性?C不能寫入超過65535行、256列的數據(因為它只支持Excel 2003及之前的版本,在這些版本的Excel中行數和列數有此限制),這對于實際應用還是不夠的。為此經過一番尋找發現了一個支持07/10/13版本Excel的openpyxl,雖然功能很強大,但是操作起來感覺沒有xlwt方便。下面分別說下幾個模塊的常用操作。

xlrd

xlrd是用來從Excel中讀寫數據的,但我平常只用它進行讀操作,寫操作會遇到些問題。用xlrd進行讀取比較方便,流程和平常手動操作Excel一樣,打開工作簿(Workbook),選擇工作表(sheets),然后操作單元格(cell)。下面舉個例子,例如要打開當前目錄下名為”data.xlsx”的Excel文件,選擇第一張工作表,然后讀取第一行的全部內容并打印出來。Python代碼如下:

            
#打開excel文件
data=xlrd.open_workbook('data.xlsx')  
#獲取第一張工作表(通過索引的方式)
table=data.sheets()[0] 
#data_list用來存放數據
data_list=[] 
#將table中第一行的數據讀取并添加到data_list中
data_list.extend(table.row_values(0))
#打印出第一行的全部數據
for item in data_list:
 print item
          

上面的代碼中讀取一行用table.row_values(number),類似的讀取一列用table.column_values(number),其中number為行索引,在xlrd中行和列都是從0開始索引的,因此Excel中最左上角的單元格A1是第0行第0列。

xlrd中讀取某個單元格用table.cell(row,col)即可,其中row和col分別是單元格對應的行和列。

下面簡單歸納一下xlrd的用法

xlrd用法總結

打開Excel工作簿

            
data=xlrd.open_workbook(filename)
          

查看工作簿中所有sheet的名稱

            
data.sheet_names()
          

選擇某一個工作表(通過索引或表名稱)

            
#獲取第一個工作表
table=data.sheets()[0]

#通過索引獲取第一個工作表
table=data.sheet_by_index(0)

#通過表名稱選擇工作表
table=data.sheet_by_name(u'哈哈')
          

獲取表格的行數和列數

            
nrows=table.nrows
ncols=table.ncols
          

獲取整行和整列的值

            
table.row_values(number)
table.column_values(number)
          

通過循環讀取表格的所有行

            
for rownum in xrange(table.nrows):
 print table.row_values(rownum)
          

獲取單元格的值

            
cell_A1=table.row(0)[0].value
#或者像下面這樣
cell_A1=table.cell(0,0).value
#或者像下面這樣通過列索引
cell_A1=table.col(0)[0].value
          

寫操作自己很少用,所以就不歸納了。

xlwt

如果說xlrd不是一個單純的Reader(如果把xlrd中的后兩個字符看成Reader,那么xlwt后兩個字符類似看成Writer),那么xlwt就是一個純粹的Writer了,因為它只能對Excel進行寫操作。xlwt和xlrd不光名字像,連很多函數和操作格式也是完全相同。下面簡要歸納一下常用操作。

xlwt常用操作

新建一個Excel文件(只能通過新建寫入)

            
data=xlwt.Workbook()
          

新建一個工作表

            
table=data.add_sheet('name')
          

寫入數據到A1單元格

            
table.write(0,0,u'呵呵')
          

注意: 如果對同一個單元格重復操作,會引發overwrite Exception,想要取消該功能,需要在添加工作表時指定為可覆蓋,像下面這樣

            
table=data.add_sheet('name',cell_overwrite_ok=True)
          

保存文件

            
data.save('test.xls')
          

這里只能保存擴展名為xls的,xlsx的格式不支持

xlwt支持一定的樣式,操作如下

            
#初始化樣式
style=xlwt.XFStyle()

#為樣式創建字體
font=xlwt.Font()

#指定字體名字
font.name='Times New Roman'

#字體加粗
font.bold=True

#將該font設定為style的字體
style.font=font

#寫入到文件時使用該樣式
sheet.write(0,1,'just for test',style)
          

openpyxl

該模塊支持最新版的Excel文件格式,對Excel文件具有響應的讀寫操作,對此有專門的Reader和Writer兩個類,便于對Excel文件的操作。雖然如此,但我一般還是用默認的workbook來進行操作。常用操作歸納如下:

openpyxl常用操作

讀取Excel文件

            
from openpyxl.reader.excel import load_workbook

wb=load_workbook(filename)
          

顯示工作表的索引范圍

            
wb.get_named_ranges()
          

顯示所有工作表的名字

            
wb.get_sheet_names()
          

取得第一張表

            
sheetnames = wb.get_sheet_names() 
ws = wb.get_sheet_by_name(sheetnames[0])
          

獲取表名

            
ws.title
          

獲取表的行數

            
ws.get_highest_row()
          

獲取表的列數

            
ws.get_highest_column()
          

單元格的讀取,此處和xlrd的讀取方式很相近,都是通過行和列的索引來讀取

            
#讀取B1單元格中的內容
ws.cell(0,1).value
          

當然也支持通過Excel坐標來讀取數據,代碼如下

            
#讀取B1單元格中的內容
ws.cell("B1").value
          

寫文件,只有一種操作方式,就是通過坐標。例如要向單元格C1寫數據,就要用類似ws.cell(“C1”).value=something這樣的方式。

一般推薦的方式是用openpyxl中的Writer類來實現。代碼類似下面這樣:

            
from openpyxl.workbook import Workbook 
 
#ExcelWriter,里面封裝好了對Excel的寫操作
from openpyxl.writer.excel import ExcelWriter 

#get_column_letter函數將數字轉換為相應的字母,如1-->A,2-->B 
from openpyxl.cell import get_column_letter 

#新建一個workbook 
wb = Workbook() 

#新建一個excelWriter 
ew = ExcelWriter(workbook = wb) 

#設置文件輸出路徑與名稱 
dest_filename = r'empty_book.xlsx' 

#第一個sheet是ws 
ws = wb.worksheets[0] 

#設置ws的名稱 
ws.title = "range names"

#向某個單元格中寫入數據
ws.cell("C1").value=u'哈哈'

#最后保存文件
ew.save(filename=dest_filename)
          

向某個單元格內寫文件時要先知道它對應的行數和列數,這里注意行數是從1開始計數的,而列則是從字母A開始,因此第一行第一列是A1,這實際上是采用坐標方式操作Excel。例如,想向表格的第三行第一列插入一個數值1.2,用xlwt寫就是table.write(2,0,1.2),因為xlwt中行列索引都從0開始;而如果用openpyxl寫就是ws.cell(“A3”).value=1.2。一般對于一個較大的列數,需要通過get_column_letter函數得到相應的字符,然后再調用cell函數寫入。

下面是我之前寫的一個代碼的一部分,可以用來演示將多位數組保存到Excel文件中。為了體現多維數組,這里用到了numpy,另外這里為了簡化過程,沒有用ExcelWriter。代碼如下:

            
#coding:utf-8

from openpyxl import Workbook
from openpyxl.cell import get_column_letter

import numpy as np
#生成一個對角陣
a=np.diag([1,2,3,4,5])

#新建一個工作簿
wb=Workbook()
#使用當前激活的工作表(默認就是Excel中的第一張表)
ws=wb.active
#下面是對a的遍歷,注意cell中行和列從1開始,a中索引從0開始。
for row in xrange(1,a.shape[0]+1):
  for col in xrange(1,a.shape[1]+1):
    col_letter=get_column_letter(col)
    ws.cell('%s%s'%(col_letter,row)).value=a[row-1,col-1]
wb.save('test.xlsx')
          

暫時介紹這么多,基本夠用了。

總結

讀取Excel時,選擇openpyxl和xlrd差別不大,都能滿足要求

寫入少量數據且存為xls格式文件時,用xlwt更方便

寫入大量數據(超過xls格式限制)或者必須存為xlsx格式文件時,就要用openpyxl了。

除以上幾個模塊外,還有Win32com等模塊,但沒有用過,就不說了。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91福利一区二区在线观看 | 久久久入口 | 久操视频网 | 国产在线观| 啪啪小视频网站 | 男女视频在线免费观看 | 欧美视频网 | 一级毛片免费播放视频 | 国产一区二区三区免费观看 | 超级碰碰碰视频在线观看 | 日韩在线视频观看免费 | 日韩不卡视频在线 | 91精品国产色综合久久 | 亚洲人与黑人xxxx | 亚洲美女天堂网 | 555夜色666夜色精品站 | 午夜视频十八嗯嗯啊免费 | 性看小视频 | 日韩一区二区三区四区五区 | 鲁丝片一区二区三区免费 | 亚洲区第一页 | 日本高清免费不卡在线播放 | 亚洲欧美日韩中文字幕在线不卡 | 欧美日韩一区二区三区在线观看 | 91精品国产综合久久久久蜜臀 | 男女啪啪免费视频 | 亚洲精品不卡久久久久久 | 91高清在线观看 | 在线视频中文字幕乱人伦 | 国产免费久久 | 婷婷人人爽人人做人人添 | 天堂在线资源av | 在线不卡一区 | 国产精品国偷自产在线 | 黑人性猛交xxxx乱大交一 | 日韩成人在线观看 | 国产精品一区二 | 天天色av | 精品免费久久久久久成人影院 | 日本三级久久 | 精品国产免费久久久久久 |