python3與Excel的完美結合

Excel 是 Windows 環境下流行的、強大的電子表格應用。openpyxl 模塊讓 Python 程序能讀取和修改 Excel 電子表格文件。例如,可能有一個無聊的任務,須要從一個電子表格拷貝一些數據,粘貼到另外一個電子表格中。或者可能須要從幾千行中挑選幾行,根據某種條件稍做修改。或者須要查看幾百份部門預算電子表格,尋找其中的赤字。正是這種無聊無
腦的電子表格任務,能夠經過 Python 來完成。LibreOffice Calc, WPS 和 OpenOffice Calc 都能處理 Excel 的電子表格文件格式,這意味着 openpyxl 模塊也能處理來自這些應用程序的電子表格。你能夠從 https://www.libreoffice.org/和 http://www.openoffice.org/下載這些軟件。即便你的計算機上已經安裝了 Excel,可能也會發現這些程序更容易使用。函數

1. Excel文檔基本定義

  • 工做簿(workbook): 一個 Excel 電子表格文檔;
  • 工做表(sheet): 每一個工做簿能夠包含多個表, 如: sheet1, sheet2等;
  • 活動表(active sheet): 用戶當前查看的表;
  • 列(column): 列地址是從 A 開始的;
  • 行(row): 行地址是從 1 開始的;
  • 單元格(cell): 特定行和列的方格;

2. 安裝 openpyxl 模塊

Python 沒有自帶 openpyxl,因此必須安裝。spa

pip3 install openpyxl

3. 讀取 Excel 文檔

將使用一個電子表格 example.xlsx,你能夠本身建立這個電子文檔,內容以下:excel

example.xlxs文件內容

  • 在導入 openpyxl 模塊後,就能夠使用 openpyxl.load_workbook()函數。打開 Excel 文檔
# 導入工做薄
1. wb = openpyxl.load_workbook('excelDemo/example.xlsx')    # 加載工做薄
2. wb.sheetnames                                       # 獲取當前全部工做表的名稱, 返回一個列表 
3. wb.active                                           # 獲取當前活躍的工做表
  • 從工做簿中取得工做表
4. sheet = wb['Sheet1']                # 工做表
5. sheet.title                         # 獲取當前活動表的名稱
6. sheet.cell(row=1, column=2)         #  獲取單元格指定行和指定列的內容
  • 表中取得單元格

Cell 對象有一個 value 屬性,不出意外,它包含這個單元格中保存的值。Cell 對象也有 row、column 和 coordinate 屬性,提供該單元格的位置信息。code

row屬性給出的是整數 1,column 屬性給出的是'B',coordinate 屬性給出的是'B1'。對象

6. cell = sheet['A1']
7. cell_value = sheet['A1'].value
8. cell.row, cell.column cell.coordinate

4. 工做簿、工做表、單元格

下面是從電子表格文件中讀取單元格涉及的全部函數、方法和數據類型。一個完整的操做過程以下:blog

  • 導入 openpyxl 模塊。
  • 調用 openpyxl.load_workbook()函數。
  • 取得 Workbook 對象。
  • 調用 wb.sheetnames和 wb.active 獲取工做簿詳細信息。
  • 取得 Worksheet 對象。
  • 使用索引或工做表的 cell()方法,帶上 row 和 column 關鍵字參數。
  • 取得 Cell 對象。
  • 讀取 Cell 對象的 value 屬性

一個完整的案例代碼以下:索引

import openpyxl


# 1. 讀取excel文檔
wb = openpyxl.load_workbook('excelDemo/example.xlsx')

# # 返回一個workbook對象, 有點相似於文件對象;
# print(wb, type(wb))



# 2. 在工做薄中取得工做表
# print(wb.get_sheet_names())
# 返回一個列表, 存儲excel表中全部的sheet工做表;
print(wb.sheetnames)

# 返回一個worksheet對象, 返回當前的活動表;
# print(wb.get_active_sheet())
# print(wb.active)



# 3. 獲取工做表中, 單元格的信息
# wb.get_sheet_by_name('Sheet1')
sheet = wb['example']
print(sheet['A1'])
print(sheet['B1'].value)

cell = sheet['B1']
print(cell.row, cell.column)


print(sheet.cell(row=3, column=2))
print(sheet.cell(row=3, column=2).value)
print(sheet.cell(row=3, column=2, value='www'))


# sheet的屬性

print(sheet.max_column)
print(sheet.max_row)
print(sheet.title)
sheet.title = 'example'
print(sheet.title)


for row in sheet.rows:
    for cell in row:
        print(cell.value, end='\t')
    print('\n')

wb.save(filename="excelDemo/example.xlsx")
相關文章
相關標籤/搜索