日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

最全整理!Python 操作 Excel 库 xlrd与xlwt 常用操作详解!

發布時間:2024/9/15 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最全整理!Python 操作 Excel 库 xlrd与xlwt 常用操作详解! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源/早起Python

在之前的Python辦公自動化系列文章中,我們已經相信介紹了openyxl、xlsxwriter等Python操作Excel庫。

相信大家對于幾個庫的差異與使用場景有了一定的認識,本文將繼續介紹另外兩種操作Excel的Python庫---xlrd與xlwt。看看這兩者搭配起來如何玩出火花!

和以前文章一樣,有請老朋友openpyxl登場來進行對比

  • openyxl:可以對xlsx、xlsm文件進行讀、寫操作,主要對Excel2007年之后的版本(.xlsx)

  • xlrd:可以對xlsx、xls、xlsm文件進行讀操作且效率高

  • xlwt:主要對xls文件進行寫操作且效率高,但是不能執行xlsx文件

通過對比,可以看到在效率上而言,xlrd&xlwt比openyxl要高效得多。而寫入數據方面上而言,openyxl又比較貼近我們的日常所需,所以兩種方式來處理Excel各有千秋。

一、簡介

xlrd是用來從Excel中讀寫數據的,但我們通常只用它進行讀操作,寫操作會相對于專門寫入的模塊麻煩一些。其實,后面的rd可以看出是reader的縮小。

類比于xlrd的reader,那么xlwt就相對于writer,而且很純正的一點就是它只能對Excel進行寫操作。xlwt和xlrd不光名字像,連很多函數和操作格式也是完全相同。下面讓我們慢慢介紹。

二、安裝與使用

安裝很簡單,直接在命令行或者終端中使用pip安裝

pip?install?Xlrd pip?install?xlwt

而使用xlrd&xlwt操作Excel的大致過程如下圖所示

三、xlrd常用操作詳解

現在我們講解xlrd操作Excel部分常用操作,先準備一份Excel文件,大致如下圖:

用xlrd進行讀取比較方便,流程和平常手動操作Excel一樣,打開工作簿(Workbook),選擇工作表(sheets),然后操作單元格(cell)。接下來先介紹一下基本操作在舉個例子。

3.1 打開Excel文件

import?xlrd df?=?xlrd.open_workbook(name)?

先導入模塊而后使用open_workbook()函數來讀取指定的一個工作簿對象。這里的參數name是Excel文件的名字,一般使用的是相對路徑的名字,結果如下

3.2 查看工作簿中所有sheet

df.sheet_names()

我們讀取上述文件,便可以得到以列表形式嵌字符串的值。

3.3 選擇某一個工作表

先看代碼

table=df.sheets()[0]??#列表是從0開始計數 table=df.sheet_by_index(0) table=df.sheet_by_name('name')

第一行代碼是獲取第一個工作表的意思,寫法是根據內置的列表格式來選取的。

第二行代碼顧名思義是通過索引獲取第一個工作表,這里的索引與pandas中DataFrame的index索引類似,只不過對象換成了工作表。

第三行代碼是通過表的名稱選擇工作表,如果工作表是有自己的名字的,那么這個讀取方式是最方便的。

打印table,可以得到類似下圖的結果

3.4 獲取表格的行數和列數

注意,這里不需要在函數后面加小括號,否則你可能debug時都頭痛于錯在哪。

row=table.nrows col=table.ncols

打印row和col,可以發現是和我們的原表格一樣的行列數。

3.5 獲取整行和整列的值

這里需要注意兩個參數:num1和num2

table.row_values(num1) table.column_values(num2)

num1在row_values()中,指的是選取的行數是多少,例如我們選取第一行所有字段名稱數據,那么這個num1就是0。

同理,column_values()的參數就是第幾列的意思。

它出來的值是一個列表的形式。調用第一行代碼,可以得到如下結果。

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

在第五步我們實現了讀取單行單列的數據,那么我們就用循環來將所有行打印出來。

for?i?in?range(table.nrows):print?(table.row_values(i))

效果如下

3.7 獲取單元格的值

代碼很簡單,有點像VBA

cell1=table.row(0)[0].value cell1=table.cell(0,0).value cell1=table.col(0)[0].value

第一行獲取單元格值的方式是通過調取指定行數據進行篩選。

第二行是以二維的形式獲取,即(第i行,第j列)形式。

第三行與第一行類似是通過列索引調用。

3.8 例子

最后來舉一個完整的例子

df=xlrd.open_workbook('data.xlsx')?? table=df.sheet_by_name('早起Python') data_list=[]? data_list.append(table.row_values(1)) for?i?in?data_list:print(i)

打出來的結果這里我們的目的是選取上述講解過的語法,將第三行所有數據放到data_list列表中并用for循環將它打印出來。

四、xlwt常用操作詳解

4.1 新建一個Excel文件

直接使用.Workbook()即可

import?xlwt df2?=?xlwt.Workbook()

4.2 新建一個工作表

這里的name是工作表的名稱

table2=df2.add_sheet('name')

4.3 寫入數據到指定單元格

這里有三個參數,前兩個參數對應(第i行,第j列),代表的是單元格的位置。第三個參數是要寫的值(可以是字符串、數字)

table2.write(0,0,'Python')

需要注意的是,如果是對同一個單元格重復操作,會讓Python報錯(多次輸入錯誤),所以如果想要取消這個功能,則添加這個參數在新建工作表的代碼里面。

table2=df2.add_sheet('name',cell_overwrite_ok=True)

4.4 保存文件

上面提示過,xlwt僅支持.xls的文件格式輸出,常用的xlsx是不行的。這也是這個模塊的一種缺陷。

df2.save('data2.xls')

4.5 改變樣式

調整樣式也是可以的,先看幾行代碼

style=xlwt.XFStyle()font=xlwt.Font()font.name='name?Times?New?Roman'font.bold=Truestyle.font=fontsheet.write(0,1,'Python',style)

第一行代碼是初始化樣式,可以認為是一個類似于父類的東西。

第二行代碼是為樣式創建字體

第三行代碼是指定字體的名字,這里用到的是name Times New Roman這個類型。

第四行代碼是字體加粗,以布爾值的形式的設定。

第五行代碼是將font設定為style的字體

第六行代碼是寫入文件單元格時怎么運用這個格式。

4.6 例子:

最后,我們結合兩個模塊進行讀寫操作。

我們的目標是將已經準備好的data文件進行讀取,并將其內容進行倒序排序,最終以轉置形式輸出。先思考一下如何使用代碼實現????

對于xlwt寫入部分,先創建一個早起Python的工作表。并將提取的數據列表data_list1用列表的倒敘來排序。最后用pop()函數把兩個字段名稱(grammerpopularity)放在首位。最后結合我們寫入部分講解的內容進行保存。

在xlrd讀取部分我們稍有不同的是,我們的for循環用在了提取所有數據這一步驟,而不再是循環輸出列表值。

所以完整代碼如下

import?xlrd df=xlrd.open_workbook('data.xlsx')?? table=df.sheet_by_name('早起Python') data_list=[]? for?i?in?range(table.nrows):data_list.append(table.row_values(i)) data_list1?=?[] data_list1?=?data_list[::-1] item?=?data_list1.pop(-1) data_list1.insert(0,item) import?xlwt df2?=?xlwt.Workbook() table2=df2.add_sheet('早起Python') for?i?in?range(2):for?j?in?range(9):table2.write(i,j,data_list1[j][i]) df2.save('data2.xls')

至此我們就將xlrd與xlwt的常用操作都盤點了一遍,如果想要了解的透徹一點的話,早起還是建議按照文中介紹的順序自己動手敲一遍代碼來體會

最后也希望大家能夠體會不同庫之間的異同與使用場景,當然Python操作Excel的庫并不止這五個(openpyxl、xlswriter、xlwings、xlrd、xlwt),我會在全部介紹一遍后為大家送上總結!

萬水千山總是情,點個? ????? 行不行。

推薦閱讀

Pandas處理數據太慢,來試試Polars吧!

懶人必備!只需一行代碼,就能導入所有的Python庫

絕!關于pip的15個使用小技巧

介紹10個常用的Python內置函數,99.99%的人都在用!

可能是全網最完整的 Python 操作 Excel庫總結!

總結

以上是生活随笔為你收集整理的最全整理!Python 操作 Excel 库 xlrd与xlwt 常用操作详解!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。