首頁 > 軟體

Python使用xlrd和xlwt實現自動化操作Excel

2022-08-12 14:00:48

一、前言介紹

xlrd:可以對xlsx、xls、xlsm檔案進行讀操作且效率高。

xlwt:主要對xls檔案進行寫操作且效率高,但是不能執行xlsx檔案。

xlrd是用來從Excel中讀寫資料的,但通常只用它進行讀操作,寫操作會相對於專門寫入的模組麻煩一些。

xlwt只能對Excel進行寫操作。xlwt和xlrd不光名字像,連很多函數和操作格式也是完全相同。

二、安裝

在命令列或者終端中使用pip安裝:

pip install Xlrd
pip install xlwt

三、xlrd常用操作

  用xlrd進行讀取比較方便,流程和手動操作Excel一樣,開啟工作簿(Workbook),選擇工作表(sheets),然後操作單元格(cell)

1、開啟Excel

import xlrd
df = xlrd.open_workbook(name) 

    匯入模組後使用open_workbook()函數來讀取指定的一個工作簿物件。這裡引數name是Excel檔案名字,一般使用的是相對路徑的名字。

2、檢視工作簿中所有sheet 

df.sheet_names()

讀取檔案,便可得到以列表形式嵌字串的值。 

3、選擇一個工作表

table=df.sheets()[0]  
table=df.sheet_by_index(0)
table=df.sheet_by_name('name')

第一行:獲取第一個工作表,寫法是根據內建的列表格式來選取的。

第二行:通過索引獲取第一個工作表,這裡的索引與pandasDataFrameindex索引類似,只不過物件換成了工作表。

第三行:通過表的名稱選擇工作表。

4、獲取表格的行數、列數

row=table.nrows
col=table.ncols

這裡不需要在函數後面加小括號

5、獲取整行和整列的值

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

6、通過迴圈讀取表格的所有行

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

7、獲取單元格的值

cell1=table.row(0)[0].value
cell1=table.cell(0,0).value
cell1=table.col(0)[0].value
  • 第一行:獲取單元格值的方式是通過調取指定行資料進行篩選。
  • 第二行:是以二維的形式獲取,即(第i行,第j列)形式。
  • 第三行:與第一行類似是通過列索引呼叫。

四、xlwt常用操作

1、新建Excel檔案

import xlwt
df2 = xlwt.Workbook()

2、新建工作表

table2=df2.add_sheet('name')       #name是工作表的名稱

3、寫入資料到指定單元格

table2.write(0,0,'Python')
#前兩個引數對應(第i行,第j列),代表的是單元格的位置。第三個引數是要寫的值(可以是字串、數位)

4、儲存檔案

df2.save('data2.xls')

PS:xlwt僅支援.xls的檔案格式輸出。

五、綜合xlrd、xlwt讀寫Excel

​1、讀

import xlrd
 
# 1、開啟工作本workbook
xlsx = xlrd.open_workbook(r'.t1.xlsx')
 
# 2、開啟需要操作的表sheet
table = xlsx.sheet_by_index(0)
# table = xlsx.sheet_by_name('t1')
 
# 3、讀取指定單元格的資料
print(table.cell_value(1,1))
print(table.cell(1,1).value)
print(table.row(1)[1].value)

2、寫

import xlwt
# 1、新建一個工作本
new_workbook = xlwt.Workbook()
# 2、為這個工作本中新增一個工作表
worksheet = new_workbook.add_sheet('new_test')
# 3、向指定單元格寫入內容
worksheet.write(0,0,'nt')
# 4、儲存
new_workbook.save('./nt.xls')

到此這篇關於Python使用xlrd和xlwt實現自動化操作Excel的文章就介紹到這了,更多相關Python操作Excel內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com