日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用

發布時間:2023/12/10 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一些數據處理和計算的工作,因為數據是以.CSV格式保存的,因此剛開始直接用Excel來處理。

但是做著做著發現重復的勞動,其實并沒有多大的意義,于是就想著寫個小工具幫著處理。

以前正好在一本書上看到過,使用Python來處理Excel表格,可惜沒有仔細看。

于是我到處查找資料,基本解決了日常所需,終于算是完成了任務,因此撰寫此文就算是總結吧,主要記錄使用過程的常見問題及解決。

Python操作Excel,主要用到xlrd和xlwt這兩個庫,即xlrd是讀Excel,xlwt是寫Excel的庫。

可從這里下載https://pypi.python.org/pypi。下面分別記錄Python讀和寫Excel。

Python寫Excel——xlwt

Python寫Excel的難點,不在構造一個Workbook的本身,而是填充的數據,不過這不在范圍內。

在寫Excel的操作中,也有棘手的問題,比如寫入合并的單元格,就是比較麻煩的,另外寫入還有不同的樣式。

詳細代碼如下:

importxlwt

#設置表格樣式

def?set_style(name,height,bold=False):

style?=?xlwt.XFStyle()

font?=?xlwt.Font()

font.name?=?name

font.bold?=?bold

font.color_index?=?4

font.height?=?height

style.font?=?font

return?style

#寫Excel

def?write_excel():

f?=?xlwt.Workbook()

sheet1?=?f.add_sheet('學生',cell_overwrite_ok=True)

row0?=?["姓名","年齡","出生日期","愛好"]

colum0?=?["張三","李四","戀習Python","小明","小紅","無名"]

#寫第一行

for?i?in?range(0,len(row0)):

sheet1.write(0,i,row0[i],set_style('Times?New?Roman',220,True))

#寫第一列

for?i?in?range(0,len(colum0)):

sheet1.write(i+1,0,colum0[i],set_style('Times?New?Roman',220,True))

sheet1.write(1,3,'2006/12/12')

sheet1.write_merge(6,6,1,3,'未知')#合并行單元格

sheet1.write_merge(1,2,3,3,'打游戲')#合并列單元格

sheet1.write_merge(4,5,3,3,'打籃球')

f.save('test.xls')

if?__name__?==?'__main__':

write_excel()

結果圖:

在此,對write_merge()的用法稍作解釋,如上述:sheet1.write_merge(1,2,3,3,'打游戲'),即在四列合并第2,3列,合并后的單元格內容為"合計",并設置了style。其中,里面所有的參數都是以0開始計算的。

Python讀Excel——xlrd

Python讀取Excel表格,相比xlwt來說,xlrd提供的接口比較多,但過程也有幾個比較麻煩的問題,比如讀取日期、讀合并單元格內容。

下面先看看基本的操作:

(圖表數據)

整體思路為,打開文件,選定表格,讀取行列內容,讀取表格內數據

詳細代碼如下:

importxlrd

fromdatetimeimportdate,datetime

file?='test3.xlsx'

def?read_excel():

wb?=?xlrd.open_workbook(filename=file)#打開文件

print(wb.sheet_names())#獲取所有表格名字

sheet1?=?wb.sheet_by_index(0)#通過索引獲取表格

sheet2?=?wb.sheet_by_name('年級')#通過名字獲取表格

print(sheet1,sheet2)

print(sheet1.name,sheet1.nrows,sheet1.ncols)

rows?=?sheet1.row_values(2)#獲取行內容

cols?=?sheet1.col_values(3)#獲取列內容

print(rows)

print(cols)

print(sheet1.cell(1,0).value)#獲取表格里的內容,三種方式

print(sheet1.cell_value(1,0))

print(sheet1.row(1)[0].value)

運行結果如下:

那么問題來了,上面的運行結果中紅框框中的字段明明是出生日期,可顯示的確實浮點數;同時合并單元格里面應該是有內容的,結果不能為空。

別急,我們來一一解決這兩個問題:

1.Python讀取Excel中單元格內容為日期的方式

Python讀取Excel中單元格的內容返回的有5種類型,即上面例子中的ctype:

ctype : ?0 empty,1 string,2 number, 3 date,4 boolean,5 error

即date的ctype=3,這時需要使用xlrd的xldate_as_tuple來處理為date格式,先判斷表格的ctype=3時xldate才能開始操作。

詳細代碼如下:

importxlrd

fromdatetimeimportdate,datetime

print(sheet1.cell(1,2).ctype)

date_value?=?xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)

print(date_value)

print(date(*date_value[:3]))

print(date(*date_value[:3]).strftime('%Y/%m/%d'))

運行結果如下:

2.獲取合并單元格的內容

在操作之前,先介紹一下merged_cells()用法,merged_cells返回的這四個參數的含義是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一樣,即(1, 3, 4, 5)的含義是:第1到2行(不包括3)合并,(7, 8, 2, 5)的含義是:第2到4列合并。

詳細代碼如下:

print(sheet1.merged_cells)

print(sheet1.cell_value(1,3))

print(sheet1.cell_value(4,3))

print(sheet1.cell_value(6,1))

運行結果如下:

發現規律了沒?是的,獲取merge_cells返回的row和col低位的索引即可!?于是可以這樣批量獲取:

詳細代碼如下:

merge=?[]

print(sheet1.merged_cells)

for(rlow,rhigh,clow,chigh)insheet1.merged_cells:

merge.append([rlow,clow])

forindexinmerge:

print(sheet1.cell_value(index[0],index[1]))

運行結果跟上圖一樣,如下:

Python讀寫Excel表格,就是這么簡單粗暴又好用,如果覺得不錯,對你工作中有幫助,動動手指分享給更多人哦。

好了,本文就給大伙分享到這里,文末分享一波福利

獲取方式:加python群 839383765 即可獲取!

總結

以上是生活随笔為你收集整理的python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。