1. 程式人生 > 其它 >python自動化操作Excel(xlwt、xlrd、xlutils)

python自動化操作Excel(xlwt、xlrd、xlutils)

技術標籤:Pythonpythonexcel

簡介

python中通過xlwt、xlrd和xlutils三個模組操作xls檔案。這三個模組的區別如下:

xlwt: xlwt用於在記憶體中生成一個xlsx/xls物件,增加表格資料,並把記憶體中的xls物件儲存為本地磁碟xls檔案。
xlrd:xlrd用於把本地xls檔案載入到記憶體中,可以讀取xls檔案的表格資料,查詢xls檔案的相關資訊。
xlutils:xlutils模組是xlrd和xlwt之間的橋樑,讀取xls檔案可以使用xlrd,新建建立檔案可以使用xlwt,而修改檔案則使用xlutils;可以使用xlutils模組中的copy模組拷貝一份通過xlrd讀取到記憶體中的xls物件,就可以在拷貝物件上像xlwt中那樣修改xls表格的內容,並儲存到本地。

除此之外,還有一些其他的模組也可以用於操作excel檔案,如xlwings、openyxl、xlsxwriter、win32com和pandas庫

  • xlwt可以生成xls檔案,xlrd可以讀取已經存在的xls檔案,但是如果要修改本地已經存在的xls檔案,就需要用到xlutils模組。
  • xlutils模組是xlrd和xlwt之間的橋樑,可以使用xlutils模組中的copy模組,拷貝一份通過xlrd讀取到記憶體中的xls物件,就可以在拷貝物件上像xlwt中那樣修改xls表格的內容,並儲存到本地。

使用案例

1、寫入excel檔案——xlwt的用法

# 建立一個excel物件
excel = xlwt.
Workbook(encoding='utf-8', style_compression=0) # 然後新增一個sheet表單 sheet1 = excel.add_sheet("sheet1", cell_overwrite_ok=True) # 新增自己想寫入表單的資料 sheet1.write(0,0,"name") #向(0,0)單元格寫入name sheet1.write(0,1,"age") #向(0,1)單元格寫入age sheet1.write(1,0,"小明") #向(1,0)單元格寫入小明 sheet1.write(
1,1,18) #向(1,1)單元格寫入18 # 儲存檔案 excel.save(u"exapmle.xls")

執行結果:
在這裡插入圖片描述

2、讀取excel檔案——xlrd的用法

2.1 基本用法——讀取指定單元格的資料

# 開啟excel檔案
excel = xlrd.open_workbook("exapmle.xls", style_compression=0)

# 開啟sheet表單
sheet1 = excel.sheet_by_name("sheet1", cell_overwrite_ok=True) #通過表單名開啟表單
sheets = excel.sheets() # 獲取所有sheets數
sheet1 = excel.sheet_by_index(0) #通過表單的序號開啟表單,序號從0開始
sheet1 = excel.sheets()[0]       # 同樣獲取表單
row_data = sheet1.row_values(0)  # 獲取第一行資料 type是list
col_data = sheet1.col_values(0)  # 獲取第一列資料 type是list

# 獲取表單中單元格的值
cell_value0_0 = sheet1.cell(0,0).value #獲取單元格(0,0)的值
cell_value0_1 = sheet1.cell_value(0,1) #獲取單元格(0,1)的值
cell_value1_0 = sheet1.cell_value(1,0) #獲取單元格(1,0)的值
cell_value1_1 = sheet1.cell(1,1).value #獲取單元格(1,1)的值

#輸出獲取到的結果
print(cell_value0_0,cell_value0_1)
print(cell_value1_0,cell_value1_1)

2.2 get_rows()——讀取表單中的所有資料

# 除此之外,還可以使用以下方法獲取excel中的所有資料
for i in sheet1.get_rows():#使用get_rows()方法,返回一個生成器
    print(i)

執行結果如下圖:
在這裡插入圖片描述

2.3 ncols和nrows——獲取表單中資料的行數和列數

#獲取列數
cols = sheet1.ncols

#獲取行數
rows = sheet1.nrows

#輸出結果
print(cols,rows)

輸出結果:
在這裡插入圖片描述

注: 不管哪個操作,都要先開啟相應表單才可以進行後續操作。

3、使用xlutils修改本地xls檔案內容——xlutils的用法

  • 注:修改的是xls格式的excel,不是xlsx格式

xlutils安裝包下載連結: https://pypi.python.org/pypi/xlutils
http://download.csdn.net/download/dcrmg/10040953

目前最新版本是2.0 ++ 名稱是 “xlutils-2.0.0-py2.py3-none-any.whl”
安裝指令: pip install xlutils-2.0.0-py2.py3-none-any.whl

# 匯入模組
from xlutils.copy import copy
import xlrd

# 開啟想要修改的excel檔案
excel = xlrd.open_workbook("exapmle.xls")

# 複製想要修改的檔案
excel_copy = copy(excel)

# 開啟想要修改的表單
sheet1 = excel_copy.get_sheet("sheet1") #此處可以填入序號或者表單名

# 修改想要修改的單元格
sheet1.write(1,0,"小李") #修改(1,0)單元格資料為小李
sheet1.write(1,1,23) #修改(1,1)單元格資料為23

# 儲存修改過後的檔案
excel_copy.save("exapmle.xls")

修改前的結果:
在這裡插入圖片描述
修改後的結果:
在這裡插入圖片描述