openpyxl——細微操作


1、獲取單元格

總結獲取單元格有兩種方式:

1.ws[行列名] # 列名使用英文字母

2.ws.cell(row, column) # 列名使用數字

2、設置單元格大小

# 調整列寬

ws.column_dismensions[‘A’].width = 40.0

# 調整行高

ws.row_dismensions[1].height = 60.0

3、合並\取消合並單元格

ws.merge_cells(“A1:A2”)

ws.cell(1, 1).value = “合並單元格內容”

ws.unmerge_cells(“A1:D1”)

# 注意設置樣式時只設置左上角單元格的樣式即可

from openpyxl.styles import Font, Alignment

font = Font(name=u’宋體’, size=28, bold = True)

align = Alignment(horizontal=’center’, vertical=’center’)

4、插入行列

ws.insert_rows(n) # 在第n行插入一行

ws.insert_cols(m,n) # 從第m列開始插入n列

5、刪除行列

ws.delete_cols(m, n) # 從第m列開始,刪除n列

ws.delete_rows(n) # 刪除第n行

上述兩種方式刪除行(列)后,下(后)面的表格將自動上(前)移。

6、行列遍歷

處理Excel表格有時(大多數)需要對表格進行遍歷查找,行列遍歷兩種方式:

1.ws.max_row獲得表格的最大行數,取得遍歷次數,使用for循環遍歷

for row in range(2, ws.max_row + 1):

# 一般第一行是表頭,所以從2開始,range()不含右邊界

for cell in row:

print(cell)

2. openpyxl中提供了行列生成器(ws.rows和ws.columns),這兩個生成器里面存儲了每一行(列)的數據,每一行由一個tuple包裹,便於對行列進行遍。

for row in ws.rows:

for cell in row:

print(cell)

由於ws.rows或ws.columns是生成器類型,不能直接調用,使用時往往將其轉化未list類型,然后索引遍歷獲得某一行(列)的內容

for cell in list(ws.rows)[0]:

print(cell.value)

上面例子打印第一行的內容

此外,還可以使用sheet[行列值: 行列值]來對給定單元格范圍進行遍歷。

for area_date in sheet[‘A1’:’H8’]:

for cell in area_date:

print(cell.value)

上面的例子打印A1到H8范圍內的內容

7、單元格格式

 

from openpyxl.styles.alignment import Alignment
align = Alignment(horizontal='left',vertical='center',wrap_text=True)
ws.['D1'].alignment = align
ws.alignment  = Alignment(horizontal='center', vertical='center')

 

horizontal代表水平方向,可以左對齊left,還有居中center和右對齊right,分散對齊distributed,跨列居中centerContinuous,兩端對齊justify,填充fill,常規general

vertical代表垂直方向,可以居中center,還可以靠上top,靠下bottom,兩端對齊justify,分散對齊distributed

另外還有自動換行:wrap_text,這是個布爾類型的參數,這個參數還可以寫作wrapTex



作者:一只bb張
鏈接:https://www.jianshu.com/p/7af9a7c5b27d
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM