python讀、寫、修改、追寫excel文件(xlrd / xlwt / xlutils / openpyxl)

四個工具包

  python 操做 excel 的 4 個工具包以下python

  • xlrd: 對 .xls 進行讀相關操做
  • xlwt: 對 .xls 進行寫相關操做
  • xlutils: 對 .xls 讀寫操做的整合
  • openpyxl:對 .xlsx 進行讀寫操做

注意,前三個庫都只能操做 .xls,不能操做 .xlsx
數據庫

 

這4個工具包均可以直接使用pip進行下載:工具

pip install xlrd
pip install xlwt
pip install xlutils
pip install openpyxl

 

 

xlwt 寫 excel文件(.xls) 字體

import xlwt

wbk = xlwt.Workbook(encoding="utf-8",cell_overwrite_ok=True) # 建立xls文件,可被複寫
datasheet = wbk.add_sheet("sheet1") # 建立一個名爲sheet1的sheet

# 設置單元格的樣式,如字體、背景顏色等等
style = xlwt.easyxf('pattern: pattern solid, fore_colour red')

# 語法:write(n, m, "aaa", [style])===>第n行,第m列,內容, [樣式](樣式能夠不指定,不指定即爲默認樣式)
datasheet.write(0, 0, "aaa", style)
datasheet.write(0, 1, "bbb")
datasheet.write(1, 2, "ccc")
datasheet.write(2, 3, "ddd")

wbk.save("數據庫信息.xls") # 保存

  

xlrd 讀 excel(.xls)spa

import xlrd

data = xlrd.open_workbook('excelFile.xls') # 打開Excel文件讀取數據

# 獲取sheet
the_sheet = data.sheets()[0]              # 經過索引順序獲取(0是第一個sheet) 
the_sheet = data.sheet_by_index(0)        # 經過索引順序獲取,同上 
the_sheet = data.sheet_by_name(u'Sheet1') # 經過名稱獲取

# 獲取數據,返回值爲list
data_list.row_values(1) # 第二行數據(支持負索引取值)
data_list.col_values(1) # 第二列數據

# 得到行數和列數。
rows=sheet_1_by_name.nrows # 行數
cols=sheet_1_by_name.ncols # 列數
# 輸出每一行數據
for i in range(rows):
    print(the_sheet.row_values(i))

# 得到指定單元格數據的三種方式
data=the_sheet.cell(0,0).value # 第一行第一列
data=the_sheet.row(0)[0].value # 第一行第一列
data=the_sheet.col(0)[0].value # 第一列第一行

 

修改excelexcel

row=0 # 修改第一行
col=0 # 修改第一列

# ctype 0:empty,1:string,2:number,3:date,4:boolean,5:error
cell_type=1 # 修改類型

value='Hello,Excel' # 修改內容

cell_A1=the_sheet.cell(0,0).value # 獲取第一行第一列的值

format=0

the_sheet.put_cell(row,col,cell_type,value,format) # 修改操做

cell_A1=the_sheet.cell(0,0).value # 再看一下,值已被改

 

xlutils 追寫 excelcode

  xlwt 只能建立一個全新的 excel 文件,而後對這個文件進行寫入內容以及保存。orm

  可是大多數狀況下咱們但願的是讀入一個 excel 文件,而後進行修改或追加,這個時候就須要 xlutils 了。對象

下面的 demo 是給一個 excel 文件追加內容:blog

from xlrd import open_workbook
from xlutils.copy import copy

rexcel = open_workbook("collection.xls") # 用wlrd提供的方法讀取一個excel文件
rows = rexcel.sheets()[0].nrows # 用wlrd提供的方法得到如今已有的行數
excel = copy(rexcel) # 用xlutils提供的copy方法將xlrd的對象轉化爲xlwt的對象
table = excel.get_sheet(0) # 用xlwt對象的方法得到要操做的sheet
values = ["1", "2", "3"]
row = rows
for value in values:
    table.write(row, 0, value) # xlwt對象的寫方法,參數分別是行、列、值
    table.write(row, 1, "haha")
    table.write(row, 2, "lala")
    row += 1
excel.save("collection.xls") # xlwt對象的保存方法,這時便覆蓋掉了原來的excel

 

openpyxl 模塊

  openpyxl 模塊默承認讀可寫,若只須要讀或者寫的功能,能夠在 open 時指定 write_only 或 read_only 爲 True

import openpyxl

data = openpyxl.load_workbook('excelFile.xls') # 可讀可寫
data = openpyxl.load_workbook('excelFile.xls', read_only=True) # 只讀
data = openpyxl.load_workbook('excelFile.xls', write_only=True) # 只寫
相關文章
相關標籤/搜索