最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年09月02日 10:22:27   作者:wenqiang  
這篇文章主要給大家介紹了關(guān)于Python操作excel的一些方法,其中包括xlrd、xlwt、openpyxl的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在處理excel數(shù)據(jù)時(shí)發(fā)現(xiàn)了xlwt的局限性–不能寫入超過65535行、256列的數(shù)據(jù)(因?yàn)樗恢С諩xcel 2003及之前的版本,在這些版本的Excel中行數(shù)和列數(shù)有此限制),這對(duì)于實(shí)際應(yīng)用還是不夠的。為此經(jīng)過一番尋找發(fā)現(xiàn)了一個(gè)支持07/10/13版本Excel的openpyxl,雖然功能很強(qiáng)大,但是操作起來感覺沒有xlwt方便。下面分別說下幾個(gè)模塊的常用操作。

xlrd

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

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

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

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

下面簡(jiǎn)單歸納一下xlrd的用法

xlrd用法總結(jié)

打開Excel工作簿

data=xlrd.open_workbook(filename)

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

data.sheet_names()

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

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

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

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

獲取表格的行數(shù)和列數(shù)

nrows=table.nrows
ncols=table.ncols

獲取整行和整列的值

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

通過循環(huán)讀取表格的所有行

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不是一個(gè)單純的Reader(如果把xlrd中的后兩個(gè)字符看成Reader,那么xlwt后兩個(gè)字符類似看成Writer),那么xlwt就是一個(gè)純粹的Writer了,因?yàn)樗荒軐?duì)Excel進(jìn)行寫操作。xlwt和xlrd不光名字像,連很多函數(shù)和操作格式也是完全相同。下面簡(jiǎn)要?dú)w納一下常用操作。

xlwt常用操作

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

data=xlwt.Workbook()

新建一個(gè)工作表

table=data.add_sheet('name')

寫入數(shù)據(jù)到A1單元格

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

注意:如果對(duì)同一個(gè)單元格重復(fù)操作,會(huì)引發(fā)overwrite Exception,想要取消該功能,需要在添加工作表時(shí)指定為可覆蓋,像下面這樣

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

保存文件

data.save('test.xls')

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

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

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

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

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

#字體加粗
font.bold=True

#將該font設(shè)定為style的字體
style.font=font

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

openpyxl

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

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

獲取表的行數(shù)

ws.get_highest_row()

獲取表的列數(shù)

ws.get_highest_column()

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

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

當(dāng)然也支持通過Excel坐標(biāo)來讀取數(shù)據(jù),代碼如下

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

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

一般推薦的方式是用openpyxl中的Writer類來實(shí)現(xiàn)。代碼類似下面這樣:

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

#get_column_letter函數(shù)將數(shù)字轉(zhuǎn)換為相應(yīng)的字母,如1-->A,2-->B 
from openpyxl.cell import get_column_letter 

#新建一個(gè)workbook 
wb = Workbook() 

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

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

#第一個(gè)sheet是ws 
ws = wb.worksheets[0] 

#設(shè)置ws的名稱 
ws.title = "range names"

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

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

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

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

#coding:utf-8

from openpyxl import Workbook
from openpyxl.cell import get_column_letter

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

#新建一個(gè)工作簿
wb=Workbook()
#使用當(dāng)前激活的工作表(默認(rèn)就是Excel中的第一張表)
ws=wb.active
#下面是對(duì)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')

暫時(shí)介紹這么多,基本夠用了。

總結(jié)

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

寫入少量數(shù)據(jù)且存為xls格式文件時(shí),用xlwt更方便

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

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

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • python3.6.3轉(zhuǎn)化為win-exe文件發(fā)布的方法

    python3.6.3轉(zhuǎn)化為win-exe文件發(fā)布的方法

    今天小編就為大家分享一篇python3.6.3轉(zhuǎn)化為win-exe文件發(fā)布的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 對(duì)Python 文件夾遍歷和文件查找的實(shí)例講解

    對(duì)Python 文件夾遍歷和文件查找的實(shí)例講解

    下面小編就為大家分享一篇對(duì)Python 文件夾遍歷和文件查找的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python psutil庫安裝教程

    python psutil庫安裝教程

    這篇文章給大家介紹了python psutil庫安裝教程,首先要確認(rèn)本機(jī)已安裝python環(huán)境,具體安裝過程大家參考下本文
    2018-03-03
  • 如何使用Python 打印各種三角形

    如何使用Python 打印各種三角形

    這篇文章主要介紹了如何使用Python 打印各種三角形,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python concurrent.futures模塊使用實(shí)例

    Python concurrent.futures模塊使用實(shí)例

    這篇文章主要介紹了Python concurrent.futures模塊使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python如何識(shí)別 MySQL 中的冗余索引

    Python如何識(shí)別 MySQL 中的冗余索引

    冗余索引也是一個(gè)非常重要的巡檢目,表中索引過多,會(huì)導(dǎo)致表空間占用較大,索引的數(shù)量與表的寫入速度與索引數(shù)成線性關(guān)系(微秒級(jí)),如果發(fā)現(xiàn)有冗余索引,建議立即審核刪除,這篇文章主要介紹了Python 識(shí)別 MySQL 中的冗余索引,需要的朋友可以參考下
    2022-10-10
  • Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例

    Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下
    2016-02-02
  • Python基于docker部署的Mysql備份查詢腳本

    Python基于docker部署的Mysql備份查詢腳本

    這篇文章主要來和大家分享Python基于docker部署的Mysql備份查詢的腳本,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起了解下
    2024-04-04
  • PyCharm代碼提示忽略大小寫設(shè)置方法

    PyCharm代碼提示忽略大小寫設(shè)置方法

    今天小編就為大家分享一篇PyCharm代碼提示忽略大小寫設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python中的閉包使用及作用

    Python中的閉包使用及作用

    這篇文章主要介紹了Python中的閉包使用及作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08

最新評(píng)論

铜川市| 元氏县| 漳平市| 陆河县| 恭城| 巍山| 周至县| 禹城市| 保德县| 平安县| 江川县| 安福县| 怀来县| 台前县| 当雄县| 南康市| 梁河县| 抚远县| 西华县| 遂溪县| 收藏| 舟山市| 保康县| 山丹县| 东至县| 华坪县| 满洲里市| 牟定县| 黄大仙区| 乐安县| 常宁市| 桂平市| 射洪县| 通许县| 满洲里市| 绿春县| 余庆县| 新龙县| 正蓝旗| 雷山县| 江津市|