Python之openpyxl模塊


工作中經常會用到excel表格,在python中,我們可以利用openpyxl很方便地操作它。本文先以兩個示例快速介紹openpyxl的基本用法。

示例1

展示了創建新的工作薄、激活默認表單、以行的形式賦值並保存文件。

from openpyxl import Workbook

wb = Workbook()
# 激活默認表單
ws = wb.active
# 以行為單位輸入
row = ["A1", "B1", "C1"]
ws.append(row)
# 保存文件
wb.save("1.xlsx")

此時會得到名為"1.xlsx"的excel文件,該excel文件中只有一個默認表單,默認表單的第一行被賦值了。

示例2

展示了加載工作薄、創建新表單、以單元格的形式賦值並保存文件。

from openpyxl import load_workbook

# 加載文件
wb = load_workbook("1.xlsx")
# 創建新的表單
ws = wb.create_sheet("my sheet")
# 給A3單元格賦值
ws['A3'] = 10
# 保存文件
wb.save("2.xlsx")

此時會得到名為"2.xlsx"的excel文件,該excel文件含有默認和新建的兩個表單,其中新建的表單中A3單元格被賦值了。

 

通過上述兩個示例,對openpyxl有了大概的了解后。下面將開始介紹openpyxl更多的基本用法。

修改表單名

ws.title = "new title"

操作指定名字的表單

ws1 = wb["new title"]
ws1['A3'] = 10

遍歷工作薄中的表單名

for sheet in wb:
    print(sheet.title)

復制表單

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

 給單元格賦值

# 方法1
ws['A4'] = 10
# 方法2
ws.cell(row=4, column=1, value=10)

使用datetime格式賦值

import datetime
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# set date using a Python datetime
ws['A1'] = datetime.datetime(2010, 7, 21)
print(ws['A1'].number_format)
print(ws['A1'].value)

 運行結果如下:

yyyy-mm-dd h:mm:ss
2010-07-21 00:00:00

使用公式賦值

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# add a simple formula
ws["A1"] = "=SUM(1, 1)"
wb.save("formula.xlsx")

合並/取消合並單元格

from openpyxl.workbook import Workbook

wb = Workbook()
ws = wb.active
# 方法1
ws.merge_cells('A2:D2')
ws.unmerge_cells('A2:D2')
# 方法2
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)

wb.save("merge.xlsx")

 添加圖表

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active
for i in range(10):
    ws.append([i])

values = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=10)
chart = BarChart()
chart.add_data(values)
ws.add_chart(chart, "E15")
wb.save("SampleChart.xlsx")

除了上述常見用法外,openpyxl更多更強大的功能還需移步官方文檔去了解。

 

 參考資料

 


免責聲明!

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



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