1. 程式人生 > >Python:xlrd和xlwt模組操作Excel使用詳解

Python:xlrd和xlwt模組操作Excel使用詳解

python提供了從Excel表格中讀取資料的模組xlrd,和xlwt模組將資料寫入Excel表格。

xlrd和xlwt模組需要我們自己安裝。

1.準備工作

1.安裝

  • 外網安裝方法
    pip install xlrd
    pip install xlwt

  • 內網安裝方法
    a.在python官網下載http://pypi.python.org/pypi/xlrdxlrd下載xlrd的安裝包。
    b.壓縮包放置在python安裝目錄下python/Lib/site-packages。
    c.解壓壓縮包:tar zxvf xlrd-1.0.0.tar.gz
    d.進入到解壓的資料夾:cd xlrd-1.0.0
    e.執行命令:python setup,py install

2.測試
打來終端,python—>import xlrd。如果不報no xlrd module錯誤表示安裝成功。

2.xlrd使用詳解

  • 1.開啟Excel表格檔案讀取資料

    #加上utf-8編碼,放置遇到中文字元時亂碼
    data = xlrd.open_workbook(filename,encoding_override = ‘utf-8’)

問題:
1.檔名若包含中文,會報錯找不到這個檔案或目錄。
2.獲取sheet時若包含中文,也會報錯。

解決方法1:
xlrd.open_workbook()函式中加上encoding_override = 'utf-8’屬性。
解決方法2:
對引數進行utf8轉碼,如:filename = filename.decode(‘utf-8’)

¥獲取sheet工作表和物件

  • 1.通過指定索引獲取sheet工作表名稱
    sheet_name = data.sheet_names()[0]

  • 2.通過sheet工作表名稱獲取sheet物件
    table =data.sheet_by_name(sheet_name)

  • 3.通過sheet索引獲取sheet工作表的物件
    table = data.sheet_by_index(0)

  • 4.獲取所有sheet工作表的名字
    sheetnames = data.sheet_names() #返回book中所有工作表的名字

  • 5.檢查某個sheet是否匯入完畢
    data.sheet_loaded(sheet_name or indx)

¥.行操作列操作

  • 1.獲取行數和列數
    nrows=table.nrows #總行數
    ncols = table.ncols #總列數
  • 2.獲得指定行列的值
    返回物件為該行該列中所有單元格的資料組成的列表。
    row_data = table.row_values(1) #獲得第2行的資料列表
    col_data = table.col_values(1) #獲得第2列的資料列表
    table.row_len(rowx) #返回該列的有效單元格長度

¥單元格操作
單元格是組成表格的最小單位,可以拆分或者合併。每個資料的輸入和修改都是在單元格中進行的。

  • 單元格物件
    table.cell(rowx,colx) #返回單元格物件
  • 單元格資料型別
    table.cell_type(rowx,colx) #返回單元格中的資料型別
  • 求單元格中的資料
    table.cell_value(rowx,colx) #返回單元格中的資料

表格屬性

  • 單元格資料型別

    • 0.empty(空的)
    • 1.string(text)
    • 2.number
    • 3.date
    • 4.boolean
    • 5.error
    • 6.blank(空白表格)
  • 獲取單元格內容的資料型別
    ctype=sheet2.cell(1,0).ctype #第2行第1列內容資料型別

¥使用例項
可以封裝成函式使用。

import xlrd
def getFiledData(filename):
    #欄位結構字典{'id_0001-1',{'02D0005',''賬號ID},}
    getfiledDict={}
    onesheetDict={}
    #開啟Excel表格檔案
    xlsdata = xlrd.open_workbook(filename,encoding_override = 'utf-8')
    #獲取所有的sheet
    tableList = xlsdata.sheet_names()
    #迴圈讀表中每行儲存需要內容
    for tablenum in tableList:
        #獲取工作表
        table = xlsdata.sheet_by_name(tablenum)
        #行
        nrows=table.nrows
        for rownum in range(1,nrows):
            chinesename = table.cell_value(rownum,2)
            mustfileds = table.cell_value(rownum,6)
            onesheetDict[chinesename]=mustfileds
            
        getfiledDict[tablenum]=onesheetDict
        #每張表讀完初始化
        onesheetDict={}
    return getfiledDict

3.xlwt基本操作

#coding: utf-8
import xlwt
#建立一個table物件,使用utf-8編碼,並設定壓縮比
table = xlwt.Workbook(encoding='utf-8', style_compression=0)
#新增一個sheet物件
sheet = table.add_sheet('sheet 1',cell_overwrite_ok=True) #第二個引數用於確認同一個cell單元是否可以重設值
sheet.write(0,0,'sometext') #往指定單元格寫入資料
sheet.write(0,0,'overwrite') #覆蓋寫入,需要cell_overwrite_ok=True
#設定單元格風格,指定字型格式等
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
style.font = font
sheet.write(0,1,'text', style)
table.save(r'E:\py\test.xls')  #該檔名必須存在


每天進步一點點、快樂一點點、開心一點點。good,come on!