Python openpyxl 處理Excel使用指南

      網友投稿 1461 2025-03-31

      這是一份openpyxl的使用指南。本文講述如何使用openpyxl處理Excel文件。

      創建工作本

      workbook指的就是Excel文件。使用openpyxl并不需要你在電腦上自己創建文件。直接引入Workbook類就可以開始工作。

      >>> from openpyxl import Workbook >>> wb = Workbook()

      至此一個至少有1個工作表的工作本已經被創建了。你可以通過Workbook.active屬性來獲取到工作表。

      >>> ws = wb.active

      注意:

      默認工作表序號是被設置成0的。除非你修改了這個值,否則用這個方法獲取到的都是第一張表。

      可以通過 Workbook.create_sheet() 方法來創建新的工作表

      >>> ws1 = wb.create_sheet("Mysheet") # 默認在后面插入一張新表 # 或者 >>> ws2 = wb.create_sheet("Mysheet", 0) # 在第一位插入新表 # 或者 >>> ws3 = wb.create_sheet("Mysheet", -1) # 在倒數第二的位置插入表

      工作表被創建的時候會自動命名,名字是以數字序列來排的(例如Sheet, Sheet1, Sheet2, …)。

      可以使用 Worksheet.title 來修改工作表的名字。

      ws.title = "New Title"

      默認情況下,工作表名字的標題顏色是白色的。

      賦予RGB值 Worksheet.sheet_properties.tabColor 來修改顏色。

      ws.sheet_properties.tabColor = "1072BA"

      當你命名了工作表后,也可以通過名字來獲取到這張表。

      >>> ws3 = wb["New Title"]

      查看工作本中所有表格的名字,使用 Workbook.sheetname 屬性。

      >>> print(wb.sheetnames) ['Sheet2', 'New Title', 'Sheet1']

      循環打印名字

      >>> for sheet in wb: ... print(sheet.title)

      在同一個工作本(Excel文件)中,可以使用 Workbook.copy_worksheet() 復制表格。

      >>> source = wb.active >>> target = wb.copy_worksheet(source)

      注意

      只有單元格(包括數值,風格,超鏈接和注釋)和確定的工作表屬性(包括尺寸,格式和屬性)可以被復制。

      工作表其他的內容是不能復制的,比如圖片,圖表等。

      也可以在不同的Excel文件中復制表格。如果Excel文件是只讀或只寫的,就不能復制表格。

      處理數據

      單元格

      現在我們知道來如何獲取到工作表。我們可以開始修改單元格數據了。

      用單元格的坐標可以獲取到單元格。

      >>> c = ws['A4']

      返回的是A4單元格。如果之前A4不存在,則會創建A4單元格。

      給單元格傳入數據,直接賦值

      >>> ws['A4'] = 4

      我們也可以用 Worksheet.cell() 方法,通過行列序號的方式來拿到單元格。

      >>> d = ws.cell(row=4, column=2, value=10)

      注意

      如果工作表是在內存中創建的,它是不包含單元格的。第一次獲取單元格時會先創建單元格。

      警告:因為這個特性,就算是沒給單元格賦值,遍歷的時候會直接在內存中創建它們。

      例如

      >>> for x in range(1,101): ... for y in range(1,101): ... ws.cell(row=x, column=y)

      會在內存中創建 100x100 個沒有值的單元格。

      處理多個單元格

      獲取一個范圍內的多個單元格。

      >>> cell_range = ws['A1':'C2']

      獲取行或列的單元格

      >>> colC = ws['C'] >>> col_range = ws['C:D'] >>> row10 = ws[10] >>> row_range = ws[5:10]

      也可以用 Worksheet.iter_rows() 方法

      >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): ... for cell in row: ... print(cell)

      類似的 Worksheet.iter_cols() 也會返回列單元格

      >>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): ... for cell in col: ... print(cell)

      注意:性能原因 Worksheet.iter_cols() 方法在只讀模式下不能使用。

      如果你需要遍歷文件中的所有行列,可以使用Worksheet.rows

      >>> ws = wb.active >>> ws['C9'] = 'hello world' >>> tuple(ws.rows) ((, , ), (, , ), (, , ), (, , ), (, , ), (, , ), (, , ), (, , ), (, , ))

      或者是Worksheet.columns屬性

      >>> tuple(ws.columns) ((, , , , , , ... , , ), (, , , , , , , , ))

      注意:基于性能方面的考慮,Worksheet.columns在只讀模式中不能使用。

      讀取數據

      如果只是要讀取表中的數據,可以使用 Worksheet.values。它會返回表中所有行的單元格的值。

      for row in ws.values: for value in row: print(value)

      Worksheet.iter_rows() 和 Worksheet.iter_cols() 都可以獲取到單元格的值。

      >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True): ... print(row) (None, None, None) (None, None, None)

      數據存儲

      Python openpyxl 處理Excel使用指南

      當我們有了單元格后,可以賦值

      >>> c.value = 'hello, world' >>> print(c.value) 'hello, world' >>> d.value = 3.14 >>> print(d.value) 3.14

      保存文件

      最簡單和最安全的保存文件的方法就是使用 Workbook.save()。

      wb = Workbook() wb.save('balances.xlsx')

      注意,這個方法會在沒有警告的情況下覆蓋已有的文件。

      文件擴展名并沒有被限制為xlsx或xlsm。

      存儲成為流(stream)

      如果要把文件存成流,例如web應用Pyramid, Flask 或者Django,提供一個NamedTemporaryFile()即可

      >>> from tempfile import NamedTemporaryFile >>> from openpyxl import Workbook >>> wb = Workbook() >>> with NamedTemporaryFile() as tmp: wb.save(tmp.name) tmp.seek(0) stream = tmp.read()

      把工作本保存成為模板,需要指定屬性 template=True

      >>> wb = load_workbook('document.xlsx') >>> wb.template = True >>> wb.save('document_template.xltx')

      設template為False,即保存為文檔。

      >>> wb = load_workbook('document_template.xltx') >>> wb.template = False >>> wb.save('document.xlsx', as_template=False)

      注意:在保存文檔的時候應該注意文件擴展名,比如.xltx和.xlsx。以防后面用其他軟件打開的時候遇到麻煩。

      接下來的這些是錯誤操作

      >>> wb = load_workbook('document.xlsx') >>> # 需要存儲成*.xlsx文件 >>> wb.save('new_document.xlsm') >>> # MS Excel 將無法打開這個文件 >>> >>> # 或者 >>> >>> # 需要指定 keep_vba=True >>> wb = load_workbook('document.xlsm') >>> wb.save('new_document.xlsm') >>> # MS Excel 將無法打開這個文件 >>> >>> # 或者 >>> >>> wb = load_workbook('document.xltm', keep_vba=True) >>> # 如果我們需要一個模板文件,我們必須指定擴展名為xltm >>> wb.save('new_document.xlsm') >>> # MS Excel 將無法打開這個文件

      讀取文件

      和寫文件類似,使用openpyxl.load_workbook()方法去打開一個已有文件。

      >>> from openpyxl import load_workbook >>> wb2 = load_workbook('test.xlsx') >>> print wb2.sheetnames ['Sheet2', 'New Title', 'Sheet1']

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps文字表格怎樣增加豎線(wps表格添加豎線)
      下一篇:excel if函數多個條件怎么用
      相關文章
      亚洲成a人片在线观看日本| 亚洲av永久无码精品天堂久久| 亚洲人成在线影院| 自拍偷自拍亚洲精品第1页 | 亚洲第一se情网站| 男人的天堂av亚洲一区2区| 亚洲日本成本人观看| 亚洲精品美女久久7777777| 亚洲免费观看网站| 亚洲一区在线视频| 最新国产精品亚洲| 亚洲精品中文字幕| 亚洲精品乱码久久久久蜜桃| 亚洲精品天堂无码中文字幕| 亚洲人成色在线观看| 亚洲日韩一中文字暮| 亚洲日本成本人观看| 久久精品国产亚洲AV未满十八| 亚洲AV网一区二区三区| 亚洲免费一区二区| avtt亚洲天堂| 相泽亚洲一区中文字幕| 亚洲精品乱码久久久久久久久久久久| 精品久久久久久亚洲综合网| 亚洲?V无码成人精品区日韩| 久久精品亚洲乱码伦伦中文| 久久夜色精品国产亚洲| 亚洲专区先锋影音| 亚洲av永久无码嘿嘿嘿| 亚洲欧美成人av在线观看| 激情小说亚洲图片| 亚洲色偷拍另类无码专区| 国产国拍亚洲精品mv在线观看| 亚洲国产一区二区三区青草影视| 亚洲网址在线观看| 亚洲熟女乱色一区二区三区 | 亚洲精品乱码久久久久久中文字幕 | 亚洲日韩精品一区二区三区无码 | 亚洲影院天堂中文av色| 亚洲国产aⅴ成人精品无吗| 亚洲毛片不卡av在线播放一区 |