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

歡迎訪問 生活随笔!

生活随笔

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

python

python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

發布時間:2024/1/1 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

扣丁學堂Python基礎教程之Excel處理庫openpyxl詳解

2018-05-04 09:49:49

3197瀏覽

openpyxl是一個第三方庫,可以處理xlsx格式的Excel文件。pipinstallopenpyxl安裝。

讀取Excel文件

需要導入相關函數

fromopenpyxlimportload_workbook

#默認可讀寫,若有需要可以指定write_only和read_only為True

wb=load_workbook('codingke.xlsx')

默認打開的文件為可讀寫,若有需要可以指定參數read_only為True。

獲取工作表--Sheet

#獲得所有sheet的名稱

print(wb.get_sheet_names())

#根據sheet名字獲得sheet

a_sheet=wb.get_sheet_by_name('Sheet1')

#獲得sheet名

print(a_sheet.title)

#獲得當前正在顯示的sheet,也可以用wb.get_active_sheet()

sheet=wb.active

獲取單元格

#獲取某個單元格的值,觀察excel發現也是先字母再數字的順序,即先列再行

b4=sheet['B4']

#分別返回

print(f'({b4.column},{b4.row})is{b4.value}')#返回的數字就是int型

#除了用下標的方式獲得,還可以用cell函數,換成數字,這個表示B2

b4_too=sheet.cell(row=4,column=2)

print(b4_too.value)

b4.column返回B,b4.row返回4,value則是那個單元格的值。另外cell還有一個屬性coordinate,像b4這個單元格返回的是坐標B4。

獲得最大行和最大列

#獲得最大列和最大行

print(sheet.max_row)

print(sheet.max_column)

獲取行和列

heet.rows為生成器,里面是每一行的數據,每一行又由一個tuple包裹。

sheet.columns類似,不過里面是每個tuple是每一列的單元格。

#因為按行,所以返回A1,B1,C1這樣的順序

forrowinsheet.rows:

forcellinrow:

print(cell.value)

#A1,A2,A3這樣的順序

forcolumninsheet.columns:

forcellincolumn:

print(cell.value)

上面的代碼就可以獲得所有單元格的數據。如果要獲得某行的數據呢?給其一個索引就行了,因為sheet.rows是生成器類型,不能使用索引,轉換成list之后再使用索引,list(sheet.rows)[2]這樣就獲取到第二行的tuple對象。

forcellinlist(sheet.rows)[2]:

print(cell.value)

如何獲得任意區間的單元格

可以使用range函數,下面的寫法,獲得了以A1為左上角,B3為右下角矩形區域的所有單元格。注意range從1開始的,因為在openpyxl中為了和Excel中的表達方式一致,并不和編程語言的習慣以0表示第一個值。

foriinrange(1,4):

forjinrange(1,3):

print(sheet.cell(row=i,column=j))

#out

還可以像使用切片那樣使用。sheet['A1':'B3']返回一個tuple,該元組內部還是元組,由每行的單元格構成一個元組。

forrow_cellinsheet['A1':'B3']:

forcellinrow_cell:

print(cell)

forcellinsheet['A1':'B3']:

print(cell)

#out

(,)

(,)

(,)

根據字母獲得列號,根據列號返回字母

需要導入,這兩個函數存在于openpyxl.utils

fromopenpyxl.utilsimportget_column_letter,column_index_from_string

#根據列的數字返回字母

print(get_column_letter(2))#B

#根據字母返回列的數字

print(column_index_from_string('D'))#4

將數據寫入Excel

工作表相關

需要導入WorkBook

fromopenpyxlimportWorkbook

wb=Workbook()

這樣就新建了一個新的工作表(只是還沒被保存)。

若要指定只寫模式,可以指定參數write_only=True。一般默認的可寫可讀模式就可以了。

print(wb.get_sheet_names())#提供一個默認名叫Sheet的表,office2016下新建提供默認Sheet1

#直接賦值就可以改工作表的名稱

sheet.title='Sheet1'

#新建一個工作表,可以指定索引,適當安排其在工作簿中的位置

wb.create_sheet('Data',index=1)#被安排到第二個工作表,index=0就是第一個位置

#刪除某個工作表

wb.remove(sheet)

delwb[sheet]

寫入單元格

還可以使用公式

#直接給單元格賦值就行

sheet['A1']='good'

#B9處寫入平均值

sheet['B9']='=AVERAGE(B2:B8)'

但是如果是讀取的時候需要加上data_only=True這樣讀到B9返回的就是數字,如果不加這個參數,返回的將是公式本身'=AVERAGE(B2:B8)'

append函數

可以一次添加多行數據,從第一行空白行開始(下面都是空白行)寫入。

#添加一行

row=[1,2,3,4,5]

sheet.append(row)

#添加多行

rows=[

['Number','data1','data2'],

[2,40,30],

[3,40,25],

[4,50,30],

[5,30,10],

[6,25,5],

[7,50,10],

]

由于append函數只能按行寫入。如果我們想按列寫入呢。append能實現需求么?如果把上面的列表嵌套看作矩陣。只要將矩陣轉置就可以了。使用zip()函數可以實現,不過內部的列表變成了元組就是了。都是可迭代對象,不影響。

list(zip(*rows))

#out

[('Number',2,3,4,5,6,7),

('data1',40,40,50,30,25,50),

('data2',30,25,30,10,5,10)]

解釋下上面的list(zip(*rows))首先*rows將列表打散,相當于填入了若干個參數,zip從某個列表中提取第1個值組合成一個tuple,再從每個列表中提取第2個值組合成一個tuple,一直到最短列表的最后一個值提取完畢后結束,更長列表的之后的值被舍棄,換句話,最后的元組個數是由原來每個參數(可迭代對象)的最短長度決定的。比如現在隨便刪掉一個值,最短列表長度為2,data2那一列(豎著看)的值全部被舍棄。

rows=[

['Number','data1','data2'],

[2,40],

[3,40,25],

[4,50,30],

[5,30,10],

[6,25,5],

[7,50,10],

]

#out

[('Number',2,3,4,5,6,7),('data1',40,40,50,30,25,50)]

最后zip返回的是zip對象,看不到數據的。使用list轉換下就好了。使用zip可以方便實現將數據按列寫入。

保存文件

所有的操作結束后,一定記得保存文件。指定路徑和文件名,后綴名為xlsx。

wb.save(r'D:\example.xlsx')

設置單元格風格--Style

先導入需要的類

fromopenpyxl.stylesimportFont,colors,Alignment

分別可指定字體相關,顏色,和對齊方式。

字體

bold_itatic_24_font=Font(name='線',size=24,italic=True,color=colors.RED,bold=True)

sheet['A1'].font=bold_itatic_24_font

上面的代碼指定了等線24號加粗斜體,字體顏色紅色。直接使用cell的font屬性,將Font對象賦值給它。

對齊方式

也是直接使用cell的屬性aligment,這里指定垂直居中和水平居中。除了center,還可以使用right、left等等參數。

#設置B1中的數據垂直居中和水平居中

sheet['B1'].alignment=Alignment(horizontal='center',vertical='center')

設置行高和列寬

有時候數據太長顯示不完,就需要拉長拉高單元格。

#第2行行高

sheet.row_dimensions[2].height=40

#C列列寬

sheet.column_dimensions['C'].width=30

合并和拆分單元格

所謂合并單元格,即以合并區域的左上角的那個單元格為基準,覆蓋其他單元格使之稱為一個大的單元格。

相反,拆分單元格后將這個大單元格的值返回到原來的左上角位置。

#合并單元格,往左上角寫入數據即可

sheet.merge_cells('B1:G1')#合并一行中的幾個單元格

sheet.merge_cells('A1:C3')#合并一個矩形區域中的單元格

合并后只可以往左上角寫入數據,也就是區間中:左邊的坐標。

如果這些要合并的單元格都有數據,只會保留左上角的數據,其他則丟棄。換句話說若合并前不是在左上角寫入數據,合并后單元格中不會有數據。

以下是拆分單元格的代碼。拆分后,值回到A1位置。

sheet.unmerge_cells('A1:C3')

以上就是關于扣丁學堂Python基礎教程之Excel處理庫openpyxl的詳細介紹,最后想要了解更多關于Python發展前景趨勢,請關注扣丁學堂Python培訓官網、微信等平臺,扣丁學堂IT職業在線學習教育平臺為您提供最新的Python視頻教程系統,通過千鋒扣丁學堂金牌講師在線錄制的Python視頻教程課程,讓你快速掌握Python從入門到精通開發實戰技能。扣丁學堂Python開發工程師技術交流群:279521237

【關注微信公眾號獲取更多學習資料】

標簽:

Python培訓

Python視頻教程

Python基礎教程

Python爬蟲

Python開發培訓

Python開發工程師

總結

以上是生活随笔為你收集整理的python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色激情毛片 | 欧美绿帽合集videosex | 欧美精品免费在线观看 | 一区二区三区av夏目彩春 | 国产精品免费久久久久 | 台湾佬av| 激情啪啪网站 | 国产午夜精品一区 | 成年人午夜影院 | 欧美日韩卡一卡二 | 中文字幕人乱码中文字 | 免费人成在线 | 亚洲风情亚aⅴ在线发布 | 欧美婷婷精品激情 | 久久理论视频 | 日韩一级免费观看 | 成人一级免费视频 | 人妻一区二区三区四区 | 在线免费你懂的 | 亚洲黄色网络 | 又黄又爽视频在线观看 | 欧洲综合视频 | 国产调教视频 | 重口味av| 麻豆91av| 丝袜人妻一区二区三区 | 美日韩免费 | 国产精品视频免费网站 | 潘金莲三级野外 | 欧美午夜性 | 日本特级毛片 | 欧美xxxx黑人又粗又长密月 | gay男互凵gay男同偷精 | 五十路av| jzzijzzij日本成熟少妇 | 国模私拍视频在线 | 性做久久久久久免费观看欧美 | 国产r级在线 | 清清草视频 | wwwxxx色 | 亚洲va国产va天堂va久久 | 国产主播精品 | 日韩av大片 | 日本少妇一区二区 | 性色av一区二区三区红粉影视 | 免费成人激情视频 | 日本福利小视频 | 无码人妻精品一区二区三区99v | 性高潮久久久久久久 | 久久理论视频 | 精国产人伦一区二区三区 | 狠狠搞视频| 天天干,天天干 | 欧美日韩国产一区二区三区在线观看 | 99精品久久久久久 | 91在线看视频 | www.国产黄色 | 青青草视频观看 | 日本欧美在线观看 | 国产三区四区视频 | 国产精品99精品 | 国产精品国产三级国产aⅴ原创 | 婷婷综合另类小说色区 | 国产精品美女一区二区三区 | 日韩国产高清在线 | 亚洲天堂av线 | 日本精品一区二区三区在线观看 | 欧美人妻精品一区二区免费看 | 免费福利影院 | 日韩欧美自拍 | 美女免费看片 | 色天使在线视频 | 麻豆传媒mv | xxxxxx欧美| 丁香婷婷六月天 | 性饥渴的农村熟妇 | 成人v | 男插女av | 特高潮videossexhd | 亚洲成人a∨ | 香蕉视频亚洲一级 | 色婷婷综合网 | 女人性高潮视频 | 亚洲午夜精品视频 | 黄片毛片在线观看 | 桃色一区二区 | 欧美精产国品一二三区 | 久久午夜无码鲁丝片午夜精品 | 蜜桃精品在线观看 | 欧美 日韩 精品 | 男人天堂你懂的 | 亚洲一区免费看 | 日本亲子乱子伦xxxx50路 | 午夜久久乐 | 99精品热视频| 在线免费观看一区二区 | 日韩精品在线视频免费观看 | 亚洲欧美日韩精品 | 亚洲yy|