openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)
0 前言
在閱讀本文之前,請確保您已滿足或可能滿足一下條件:
請確保您具備基本的Python編程能力。
請確保您會使用Excel。
請確保您的電腦已經安裝好Python且pip可用。
請確保您已經讀過前文:
如何使用Python操作Excel(一)LogicPanda,公眾號:編程雜藝Python | 使用Python操作Excel文檔(一)從如何使用Python操作Excel(一)中,我們可以得到一個“example.xlsx”文件,內容如圖。
本文會繼續講解openpyxl的用法。
1. 在工作表中插入/刪除行/列
對工作表的行或列進行操作時,使用Worksheet類中的方法,insert_row(),delete_row(),insert_col(),delete_col()。
from openpyxl import load_workbookimport openpxlwb = load_workbook("example.xlsx")ws = wb.get_sheet_by_name("demo")ws.insert_rows(1) # 在第一行前插入一行ws.insert_rows(1, 2) # 在第一行前插入兩個ws.delete_rows(2) # 刪除第二行ws.delete_rows(2, 2) # 刪除第二行及其后邊一行(共兩行)ws.insert_cols(3) # 在第三列前插入一列ws.insert_cols(3, 2) # 在第三列前插入兩列ws.delete_cols(4) # 刪除第四列ws.delete_cols(4, 2) #刪除第四列及其后邊一列(共兩列)wb.save("example.xlsx")2. 訪問單元格
在前文中我們講到了如何訪問單元格,如:
ws['A1']ws['A1'].value我們還可以使用行或列的方式訪問:
ws['A'][1].value # ws['A1'].valuews[1][2].value # ws['C1'].valuews['A'] # 會返回元祖,‘A’列中所有的內容ws[1] # 會返回元祖,第1行中所有的內容>>> ws[1] ? ? ?(, , , , , , , , , , , , , , , , , , )>>> ws['A'] ? ? ?(, , , , , , , , , , , , , , , , , , )PS:我們還可用切片的方式來訪問一個范圍內的單元格。
>>> ws["A1:B3"] ?((, ),(, ),(, ))>>> ws["A1:B3"][1][1].value ? ? ?4>>> ws['A1':'B3'] ? ?((, ),(, ),(, ))>>>請留意兩種切片的不同。
還可以使用行切片或者列切片:
>>> ws['A:B']((, , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , ))>>> ws[1:2]((, , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , ))3. 使用公式
首先你要清晰的明白,你要使用的公式是什么。同時你需要知道的是,openpyxl能夠在工作表中執行公式進行計算,但是并不能在程序中打印公式的值
>>> ws['A20']="=SUM(A1:A19)" ? ? ?>>> ws['A20'].value'=SUM(A1:A19)'>>> wb.save("formula.xlsx")?# 請查看A20即便如此,openpyxl卻可以幫助你檢查公式名是否正確:
>>> from openpyxl.utils import FORMULAE>>> "SUM" in FORMULAE ? ? ?True當然,你也可以用print(FORMULAE) 來看看都有什么公式可以用(與Excel并沒有什么不一樣)。
4. 移動單元格
使用ws.move_range()方法來移動單元格。
ws.move_range("D4:F10", rows=-1, cols=2)會將單元格D4-F10,向上移動1行,想右移動兩行。參數ows和cols用來控制單元格的移動方向。如果目標單元格有內容,會被覆蓋。
5. 拆分/合并單元格
使用ws.merge_cells()和ws.unmerge_cell()l來和合并,拆分單元格。
>>> ws.merge_cells('A2:D2') # 值為ws['A2']的值>>> ws["A2"] # >>> ws["A2"].value # 2>>> ws["B2"].value # 空>>> ws.unmerge_cells('A2:D2')?# 值會回到ws['A2'],'B2:D2'會為空。>>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)>>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)6. 插入圖片
想要用openpyxl向工作表中插入圖片,需要安裝Pillow庫:
from openpyxl.drawing.image import Imageimg = Image('logo.jpg') ? ? ?ws.add_image(img, 'A21')wb.save("img.xlsx")7. 折疊
ws1 = wb.create_sheet() # 新建一張表Sheetws1.column_dimensions.group('A','D', hidden=True) # 列折疊,A-D列ws1.row_dimensions.group(1,10, hidden=True) # 行折疊 1-10行wb.save('group.xlsx')8. 只讀模式與只寫模式
只讀模式,僅用來讀取文檔內信息,不可寫。
wb = load_workbook(filename="example.xlsx", read_only=True)wb.create_sheet("test.xlsx") # 會報錯Traceback (most recent call last): File "", line 1, in ? wb.create_sheet("test.xlsx") File "D:\Python\lib\site-packages\openpyxl\workbook\workbook.py", line 194, in create_sheet ? raise ReadOnlyWorkbookException('Cannot create new sheet in a read-only workbook')openpyxl.utils.exceptions.ReadOnlyWorkbookException: Cannot create new sheet in a read-only workbook只寫模式,僅用來寫入數據。
wb = Workbook(write_only=True)ws = wb.create_sheet()type(ws) # hasattr(ws,"value") # falsehasattr(ws,"title") # True即是說,ws已經不是worksheet對象,而是WriteOnlyWorksheet對象,也沒有value屬性,不可以讀取單元格的值。這樣做是為了讓Python處理只有寫入大量數據的情況,更快。
9.數字格式
可以使用Cell對象的nember_format屬性來查看單元格的數字樣式。
wb = load_workbook("example.xlsx")ws = wb.activews['A1'].nember_format # 'General'# 現在將單元格的數字格式設置為數值ws['A1'].nember_format # '0.00_ '# 可以在Python中修改數字格式如:ws['A1'].nember_format = 'General'# 單元格可以直接賦值時間日期類型的數據類型,如:ws['A1'] = datetime.datetime.now()ws['A1'].value # datetime.datetime(2019, 6, 9, 19, 57, 40, 918556)# 可以用is_date屬性判斷單元格是否為日期類型的數據ws['A1'].is_date10. 復習下今天內容
今天的內容主要是及第一篇文章之后,繼續講如何使用Python操作單元格和工作表。
插入/刪除行或列,訪問單元格的方法
移動單元格,合并/拆分單元格
插入圖像、使用公式折疊行/列
使用數字格式,只讀和只寫模式
好了,今天的內容就到這里了。我們下次見。
如果您對本文或者本公眾號感興趣,歡迎關注我的公眾號,留言您想看的內容,在這里,我們一起成長!
"不止于編程"
總結
以上是生活随笔為你收集整理的openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cn域名一定要备案吗知乎(cn域名一定要
- 下一篇: opencv 把3通道图像转成单通道_小