python对Excel的操作 xlrd、xlwt包详解
生活随笔
收集整理的這篇文章主要介紹了
python对Excel的操作 xlrd、xlwt包详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章更新中.............
python中對Excel表格的操作,主要用到兩個包,分別是xlrd和xlwt
1.xlrd主要用于讀Excel表
2.xlwt則主要用于寫Excel
- python—xlrd
這里我先準(zhǔn)備了一些濟(jì)南天氣的一些數(shù)據(jù)
通過python程序先對數(shù)據(jù)有一個基本的了解:
path = 'F:\\文件存放處\\weather\\濟(jì)南.xls'import xlrd import xlwt from datetime import date, datetime'''先定義一個函數(shù),對我們所擁有的數(shù)據(jù)做一個基本的了解''' def read_excel():# 打開文件workbook = xlrd.open_workbook(path)# 獲取所有的sheetprint(workbook.sheet_names()) # ['sheet1', 'sheet2']sheet1_name = workbook.sheet_names()[0]#sheet1 = workbook.sheet_by_index(0)print(sheet1)sheet1 = workbook.sheet_by_name('濟(jì)南2018年4月份天氣詳情')print(sheet1)# 顯示sheet的名稱、行數(shù)、列數(shù)print(sheet1.name, sheet1.nrows, sheet1.ncols)# 獲取整行和整列的值rows = sheet1.row_values(5) # 第六行的數(shù)據(jù)cols = sheet1.col_values(2) # 第三列的數(shù)據(jù)print(rows)print(cols)# 獲取單元格內(nèi)容(四種獲取方式)print(sheet1.cell(1, 0).value.encode('utf-8'))print(sheet1.cell_value(1, 0).encode('utf-8'))print(sheet1.row_values(1)[0].encode('utf-8'))print(sheet1.col_values(0)[1].encode('utf-8'))# 獲取單元格內(nèi)容的數(shù)據(jù)類型print(sheet1.cell(1, 0).ctype)if __name__ == '__main__':read_excel()運(yùn)行結(jié)果如下:
['濟(jì)南2018年4月份天氣詳情', '濟(jì)南2018年3月份天氣詳情', '濟(jì)南2018年2月份天氣詳情', '濟(jì)南2018年1月份天氣詳情', '濟(jì)南2017年12月份天氣詳情', '濟(jì)南2017年11月份天氣詳情', '濟(jì)南2017年10月份天氣詳情', '濟(jì)南2017年9月份天氣詳情', '濟(jì)南2017年8月份天氣詳情', '濟(jì)南2017年7月份天氣詳情', '濟(jì)南2017年6月份天氣詳情', '濟(jì)南2017年5月份天氣詳情', '濟(jì)南2017年4月份天氣詳情', '濟(jì)南2017年3月份天氣詳情', '濟(jì)南2017年2月份天氣詳情', '濟(jì)南2017年1月份天氣詳情', '濟(jì)南2016年12月份天氣詳情', '濟(jì)南2016年11月份天氣詳情', '濟(jì)南2016年10月份天氣詳情', '濟(jì)南2016年9月份天氣詳情', '濟(jì)南2016年8月份天氣詳情', '濟(jì)南2016年7月份天氣詳情', '濟(jì)南2016年6月份天氣詳情', '濟(jì)南2016年5月份天氣詳情', '濟(jì)南2016年4月份天氣詳情', '濟(jì)南2016年3月份天氣詳情', '濟(jì)南2016年2月份天氣詳情', '濟(jì)南2016年1月份天氣詳情', '濟(jì)南2015年12月份天氣詳情', '濟(jì)南2015年11月份天氣詳情', '濟(jì)南2015年10月份天氣詳情', '濟(jì)南2015年9月份天氣詳情', '濟(jì)南2015年8月份天氣詳情', '濟(jì)南2015年7月份天氣詳情', '濟(jì)南2015年6月份天氣詳情', '濟(jì)南2015年5月份天氣詳情', '濟(jì)南2015年4月份天氣詳情', '濟(jì)南2015年3月份天氣詳情', '濟(jì)南2015年2月份天氣詳情', '濟(jì)南2015年1月份天氣詳情', '濟(jì)南2014年12月份天氣詳情', '濟(jì)南2014年11月份天氣詳情', '濟(jì)南2014年10月份天氣詳情', '濟(jì)南2014年9月份天氣詳情', '濟(jì)南2014年8月份天氣詳情', '濟(jì)南2014年7月份天氣詳情', '濟(jì)南2014年6月份天氣詳情', '濟(jì)南2014年5月份天氣詳情', '濟(jì)南2014年4月份天氣詳情', '濟(jì)南2014年3月份天氣詳情', '濟(jì)南2014年2月份天氣詳情', '濟(jì)南2014年1月份天氣詳情', '濟(jì)南2013年12月份天氣詳情', '濟(jì)南2013年11月份天氣詳情', '濟(jì)南2013年10月份天氣詳情', '濟(jì)南2013年9月份天氣詳情', '濟(jì)南2013年8月份天氣詳情', '濟(jì)南2013年7月份天氣詳情', '濟(jì)南2013年6月份天氣詳情', '濟(jì)南2013年5月份天氣詳情', '濟(jì)南2013年4月份天氣詳情', '濟(jì)南2013年3月份天氣詳情', '濟(jì)南2013年2月份天氣詳情', '濟(jì)南2013年1月份天氣詳情', '濟(jì)南2012年12月份天氣詳情', '濟(jì)南2012年11月份天氣詳情', '濟(jì)南2012年10月份天氣詳情', '濟(jì)南2012年9月份天氣詳情', '濟(jì)南2012年8月份天氣詳情', '濟(jì)南2012年7月份天氣詳情', '濟(jì)南2012年6月份天氣詳情', '濟(jì)南2012年5月份天氣詳情', '濟(jì)南2012年4月份天氣詳情', '濟(jì)南2012年3月份天氣詳情', '濟(jì)南2012年2月份天氣詳情', '濟(jì)南2012年1月份天氣詳情', '濟(jì)南2011年12月份天氣詳情', '濟(jì)南2011年11月份天氣詳情', '濟(jì)南2011年10月份天氣詳情', '濟(jì)南2011年9月份天氣詳情', '濟(jì)南2011年8月份天氣詳情', '濟(jì)南2011年7月份天氣詳情', '濟(jì)南2011年6月份天氣詳情', '濟(jì)南2011年5月份天氣詳情', '濟(jì)南2011年4月份天氣詳情', '濟(jì)南2011年3月份天氣詳情', '濟(jì)南2011年2月份天氣詳情', '濟(jì)南2011年1月份天氣詳情'] <xlrd.sheet.Sheet object at 0x000001F2F2631C50> <xlrd.sheet.Sheet object at 0x000001F2F2631C50> 濟(jì)南2018年4月份天氣詳情 31 6 ['2018-04-05', '8', '1', '陰', '西北風(fēng)', '微風(fēng)'] ['最低氣溫', '20', '15', '6', '4', '1', '1', '5', '13', '17', '14', '16', '11', '6', '7', '11', '15', '18', '20', '22', '23', '11', '10', '9', '8', '16', '15', '17', '22', '21', '19'] b'2018-04-01' b'2018-04-01' b'2018-04-01' b'2018-04-01' 1Process finished with exit code 0(1)python讀取Excel中單元格的內(nèi)容返回的有5種類型,即上面示例中的ctype
ctype: 0 empty, 1 string, 2 number, 3 date, 4 boolean, 5 error那么,我們先看一下我們所擁有的數(shù)據(jù)類型
# 獲取單元格內(nèi)容的數(shù)據(jù)類型print(sheet1.cell(1, 0).value, sheet1.cell(1, 0).ctype)print(sheet1.cell(1, 1).value, sheet1.cell(1, 1).ctype)print(sheet1.cell(1, 2).value, sheet1.cell(1, 2).ctype)print(sheet1.cell(1, 3).value, sheet1.cell(1, 3).ctype)print(sheet1.cell(1, 4).value, sheet1.cell(1, 4).ctype)print(sheet1.cell(1, 5).value, sheet1.cell(1, 5).ctype) 運(yùn)行結(jié)果為: 2018-04-01 1 30 1 20 1 晴 1 東南風(fēng) 1 2級 1這么說我們所擁有的數(shù)據(jù)全部為string類型。就連日期都沒有出現(xiàn)date類型,內(nèi)心不禁感到莞爾一笑。
當(dāng)單元格的ctype = 3 時,說明該單元格的數(shù)據(jù)為date類型,這時需要用xlrd的xldate_as_tuple來處理為date格式,但是,需要先判斷單元格的ctype=3時,才能用此函數(shù)進(jìn)行操作。
date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1, 0), workbook.datemode) if (sheet1.cell(row, col).ctype == 3):date_value = xlrd.xldate_as_tuple(sheet1.cell_value(row, col), workbook.datemode)也可以將date類型在轉(zhuǎn)化為str類型
date_value = (2018, 4, 1, 0, 0) date_change = date(*date_value[:3]).strftime('%Y/%m/%d') print(date_change) print(type(date_change))程序運(yùn)行結(jié)果如下:
2018/04/01 <class 'str'>由上可知ctype的值不同,則類型也不同,處理情況與date類型類似,這里就不一一解釋了。(2)獲取合并的單元格
總結(jié)
以上是生活随笔為你收集整理的python对Excel的操作 xlrd、xlwt包详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB xlswrite函数出现“
- 下一篇: Elsevier LaTeX时间-年份(