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!