Python的openpyxl使用記錄(包含合併單元格,圖片下載和圖片插入,設置邊框,設置背景顏色)

背景

  因為公司最近要求我做一份自動化導出報告,內容有點多,為了省事,我選用了python,後面估計要自建在線辦公系統,這個後續再講

需要的庫

openpyxl 和Pandas

開始

Execl導入

from openpyxl import load_workbook
#此處抓取一個實體的execl數據對象
file_path = "../印刷站2.xlsx"
workbook = load_workbook(file_path)

單元格設置值

   這個很簡單,為了提供複用性,我建了一個工具類具體方法如下

def set_cell_value(workbook, sheet_index, cell, value):
    """?置 Excel 文件中指定?元格的值。"""
    # 加? Excel 文件


    # ??工作表
    sheet = workbook.worksheets[sheet_index]

    # ?置?元格的值
    sheet[cell] = value
import config
#傳遞數據對象 sheet的索引 單元格     數據
config.set_cell_value(work_book, 1, "D5", data.iloc[0, 0])

單元格設置插入圖片

   因為部分資源我使用http地址或者實體ip地址抓取,實際邏輯如下:

工具類
import requests
#下載圖片
def download_image(url):
    response = requests.get(url)
    response.raise_for_status()  # 确保?求成功
    return io.BytesIO(response.content)
#插入圖片
def insert_image_to_excel( wb,image_stream, sheet_index, cell,width,heigth):
    # 加??有的Excel工作簿


    # ?取指定的工作表(sheet_index?0?始)

    ws = wb.worksheets[sheet_index]

    # ?整?片大小? 100x100 像素
    resized_image_stream = resize_image(image_stream, width, heigth)

    # 插入?整后的?片到Excel
    openpyxl_img = OpenPyxlImage(resized_image_stream)
    ws.add_image(openpyxl_img, cell)
# Excel數據對象 數據流   sheet所在索引   單元格  長和寬
config.insert_image_to_excel(work_booK, image_stream, 5, col, 200, 200)

合併單元格並設置邊框顏色

  這裡我先設置合併的表格的第一行第一列的單元格自顏色,當合併單元格之後自然自己會將邊框顏色設置為整個合併的範圍

from openpyxl.styles import Border, Side
def create_shell_color(shell_info):
    thin_border = Border(left=Side(style='thin'),
                         right=Side(style='thin'),
                         top=Side(style='thin'),
                         bottom=Side(style='thin'))
    shell_info.border=thin_border

       
        sheet= work_booK["5.Setup output data"]
        begin_str = "d" + str(j) + ":h" + str(Y)
        config.create_shell_color(sheet["D" + str(j)])

        stage=68
        sheet.merge_cells(begin_str)

這裡送個好用的函數

輸入數字返回字母

def column_number_to_letter(column_number):
    """?列????列字母"""
    letter = ""
    while column_number > 0:
        column_number -= 1
        letter = chr(column_number % 26 + ord('A')) + letter
        column_number //= 26
    return letter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值