日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python自动化之Excel利器openpyxl

發(fā)布時間:2024/5/14 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python自动化之Excel利器openpyxl 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、Workbook
    • 1.1 讀取xlsx文件
    • 1.2 保存
  • 二、Sheet
    • 2.1 創(chuàng)建Sheet
    • 2.2 遍歷Sheet
    • 2.3 移動Sheet
    • 2.4 刪除Sheet
    • 2.5 插入、刪除行列
  • 三、單元格
    • 3.1 獲取某個單元格
    • 3.2 遍歷單元格
    • 3.3 獲取范圍單元格
    • 3.4 單元格賦值
    • 3.5 合并/解除合并單元格
    • 3.6 單元格數(shù)據(jù)格式
    • 3.7 單元格數(shù)字格式
  • 四、樣式
    • 4.1 字體
    • 4.2 填充
    • 4.3 邊框
    • 4.4 對齊
    • 4.5 內(nèi)建樣式
  • 參考

前言

openpyxl 是一個 用于讀寫Excel 2010 xlsx/xlsm/xltx/xltm 文件的Python庫,最初是基于PHPExcel。

可以通過pip安裝

pip install openpyxl

官方文檔:https://openpyxl.readthedocs.io/en/stable/

源碼地址:https://foss.heptapod.net/openpyxl/openpyxl

一、Workbook

1.1 讀取xlsx文件

通過 load_workbook加載文件

def load_workbook(filename, read_only=False, keep_vba=KEEP_VBA,data_only=False, keep_links=True):
  • filename:一般為 xlsx 文件名
  • read_only:只讀,不能編輯
  • keep_vba:保留VBA內(nèi)容,當設為True時要保存為xlsm格式,xlsx不能保存VBA代碼
  • data_only:當為True時,公式內(nèi)容被讀取時是公式計算出來的值,而不是公式
  • keep_links:保留鏈接
import openpyxlwb = openpyxl.load_workbook("示例.xlsx") valueWb = openpyxl.load_workbook("示例.xlsx", data_only = True)

1.2 保存

wb.save('修改后.xlsx')

二、Sheet

2.1 創(chuàng)建Sheet

names = ['Sheet', 'Sheet1', 'Sheet2'] for n in names:wb.create_sheet(n)# 創(chuàng)建Sheet,插入第一個位置 wb.create_sheet('Sheet3', 0)

2.2 遍歷Sheet

# 單個Sheet ws = wb['Sheet'] ws = wb[0] # 所有Sheet wb.worksheets # 所有Sheet名字 wb.sheetnames # 遍歷所有Sheet for sheet in wb:print(sheet) # Sheet標題 ws.title

2.3 移動Sheet

ws=wb['Sheet2'] wb.move_sheet(ws, -1)

2.4 刪除Sheet

ws=wb['Sheet1'] wb.remove(ws)del wb['Sheet']

2.5 插入、刪除行列

# 在第1行前插入2行 ws.insert_rows(1, 2) # 在第1列前插入2列 ws.insert_cols(1, 2)# 增加一行 ws.append([1, 2, 3])# 從第6行開始,往下刪除3行 ws.delete_rows(6, 3) # 刪除第6列 ws.delete_cols(6)

三、單元格

3.1 獲取某個單元格

cell = ws[A1] ws.cell(row=1, column=1)# 獲取單元格值 cell.value# 獲取單元格坐標A1 cell.coordinate

3.2 遍歷單元格

# 按行遍歷 for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):for cell in row:print(cell)# 按列遍歷 for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):for cell in col:print(cell)# 遍歷范圍單元格 cellRange=ws['A1:B3'] for row in cellRange:for cell in row:print(cell.value)

3.3 獲取范圍單元格

# 范圍單元格 cellRange=ws['A1:B3']# 單元格行 a=ws[1] b=ws[5:10]# 單元格列 c=ws['A'] d=ws['C:D']

3.4 單元格賦值

ws['A1'] = 12ws.cell(row=1, column=1, value = 12)

3.5 合并/解除合并單元格

ws.merge_cells('A2:D2') ws.unmerge_cells('A2: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)

3.6 單元格數(shù)據(jù)格式

cell.data_type
  • b 布爾值,bool
  • e 錯誤字符串,error_string (‘#NULL!’, ‘#DIV/0!’, ‘#VALUE!’, ‘#REF!’, ‘#NAME?’, ‘#NUM!’, ‘#N/A’)
  • d 時間,date
  • f 公式,formual
  • n 空或數(shù)字,null/number
  • s 字符串,string

3.7 單元格數(shù)字格式

cell.number_format
  • General 常規(guī)
  • 0.00_);[Red]\(0.00\) 數(shù)字
  • mm-dd-yy 短日期
  • [$-F800]dddd,\ mmmm\ dd,\ yyyy 長日期
  • [$-F400]h:mm:ss\ AM/PM 時間
  • 0.00% 百分數(shù)
  • # ?/? 分數(shù)
  • 0.00E+00 科學計數(shù)法
  • @ 文本

四、樣式

具體默認內(nèi)建樣式可以見源碼:https://foss.heptapod.net/openpyxl/openpyxl/-/blob/branch/3.0/openpyxl/styles/builtins.py

from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font

4.1 字體

font = Font(name='Calibri',size=11,bold=False,italic=False,vertAlign=None,underline='none',strike=False,color='FF000000') cell.font = font

4.2 填充

fill = PatternFill(fill_type=None,start_color='FFFFFFFF',end_color='FF000000') cell.fill = fill

4.3 邊框

border = Border(left=Side(border_style=None,color='FF000000'),right=Side(border_style=None,color='FF000000'),top=Side(border_style=None,color='FF000000'),bottom=Side(border_style=None,color='FF000000'),diagonal=Side(border_style=None,color='FF000000'),diagonal_direction=0,outline=Side(border_style=None,color='FF000000'),vertical=Side(border_style=None,color='FF000000'),horizontal=Side(border_style=None,color='FF000000')) cell.border = border

4.4 對齊

alignment=Alignment(horizontal='general',vertical='bottom',text_rotation=0,wrap_text=False,shrink_to_fit=False,indent=0) cell.alignment = alignment

4.5 內(nèi)建樣式

見文檔:https://openpyxl.readthedocs.io/en/stable/styles.html#using-builtin-styles

參考

  • https://openpyxl.readthedocs.io/en/stable/usage.html
  • 總結

    以上是生活随笔為你收集整理的Python自动化之Excel利器openpyxl的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。