利用python中的xlrd和xlwt操作excel
微信公眾號:數據運營人
本系列為博主的讀書學習筆記,如需轉載請注明出處。
當提起數據處理,一般情況下我們都可以用python中的pandas完成,但是當我們發現一些不規則的excel數據,所謂不規則如單元格存在合并等情況,像公司的財務報表數據等,我們可以利用python中的xlrd和xlwt模塊對該類數據進行處理。即xlrd是讀excel,而xlwt是寫excel。
xlrd打開文件獲取sheet根據sheet索引或者名稱獲取sheet內容獲取sheet名稱、行數、列數獲取指定單元格的內容獲取特定單元格的數據內容xlwt
xlrd
打開文件
workbook?=?xlrd.open_workbook(r'C:/Users/Admin/Desktop/students.xlsx')獲取sheet
print(workbook.sheet_names())print(workbook.nsheets)
['Sheet1', 'Sheet2', 'Sheet3']
3
根據sheet索引或者名稱獲取sheet內容
sheet2?=?workbook.sheet_by_index(0)sheet3?=?workbook.sheet_by_name('Sheet1')
獲取sheet名稱、行數、列數
print(sheet2.name)print(sheet2.nrows)
print(sheet2.ncols)
print(sheet3.name)
print(sheet3.nrows)
print(sheet3.ncols)
Sheet1
28
22
Sheet1
28
22
獲取指定單元格的內容
print(sheet3.row_values(0))?#?獲取第一行print(sheet3.col_values(0))?#?獲取第一列
print(sheet3.cell(2,?1).value)
print(sheet3.cell_value(1,?1))
print(sheet3.row(1)[0].value)
['競賽學生及指導教師獎勵明細', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
['競賽學生及指導教師獎勵明細', '序號', '', 0.0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '注:在校未畢業學生請提供一卡通賬號,離校學生提供建設銀行卡號及開戶行\n在職教師請提供工號,兼職教師若有工號請提供工號及銀行卡號和開戶行;離職教師請提供銀行卡號及開戶行', '', '']
分院
序號
獲取特定單元格的數據內容
print(sheet3.cell(2,?0).ctype)print(sheet3.cell(1,?1).ctype)
#?說明?ctype:0?empty,?1?string,?2?number,?3?date,?4?boolean,?5?error
0
1
xlwt
實現該格式excel的數據的設計
style?=?xlwt.XFStyle()?#?初始化樣式
font?=?xlwt.Font()?#?為樣式創建字體
font.name?=?name?#?'Times?New?Roman'
font.bold?=?bold
font.color_index?=?4
font.height?=?height
style.font?=?font
return?style
#?寫excel
def?write_excel():
f?=?xlwt.Workbook()?#?創建工作簿
'''
創建第一個sheet:
sheet1
'''
sheet1?=?f.add_sheet(u'sheet1',?cell_overwrite_ok=True)?#?創建sheet
row0?=?[u'業務',?u'狀態',?u'北京',?u'上海',?u'廣州',?u'深圳',?u'狀態小計',?u'合計']
column0?=?[u'機票',?u'船票',?u'火車票',?u'汽車票',?u'其它']
status?=?[u'預訂',?u'出票',?u'退票',?u'業務小計']
#?生成第一行
for?i?in?range(0,?len(row0)):
sheet1.write(0,?i,?row0[i],?set_style('Times?New?Roman',?220,?True))
#?生成第一列和最后一列(合并4行)
i,?j?=?1,?0
while?i?<?4?*?len(column0)?and?j?<?len(column0):
sheet1.write_merge(i,?i?+?3,?0,?0,?column0[j],?set_style('Arial',?220,?True))?#?第一列
sheet1.write_merge(i,?i?+?3,?7,?7)?#?最后一列"合計"
i?+=?4
j?+=?1
sheet1.write_merge(21,?21,?0,?1,?u'合計',?set_style('Times?New?Roman',?220,?True))
#?生成第二列
i?=?0
while?i?<?4?*?len(column0):
for?j?in?range(0,?len(status)):
sheet1.write(j?+?i?+?1,?1,?status[j])
i?+=?4
f.save(r'C:/Users/Admin/Desktop/demo1.csv')?#?保存文件
if?__name__?==?'__main__':
write_excel()
轉載于:https://www.cnblogs.com/ly803744/p/10426548.html
總結
以上是生活随笔為你收集整理的利用python中的xlrd和xlwt操作excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拨打电话号码
- 下一篇: Leetcode-997 Find th