当前位置: 首页 > news >正文

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)# 插入?整后的?片到Excelopenpyxl_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=68sheet.merge_cells(begin_str)

這裡送個好用的函數

輸入數字返回字母

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

http://www.lryc.cn/news/435397.html

相关文章:

  • 基于springboot+vue实现的在线商城系统
  • fastjson漏洞--以运维角度进行修复
  • 82页精品PPT | 构建数字化工厂的智能制造-数字化智能制造
  • Python的10个日期和时间操作的实用技巧
  • 关于大模型在产品开发中所面临的问题,利用大模型技术解决很简单!
  • SpringBoot2:请求处理原理分析-利用内容协商功能实现接口的两种数据格式(JSON、XML)
  • BUUCTF 之Basic 1(BUU LFI COURSE 1)
  • Android 蓝牙三方和动态权限三方
  • 点餐|基于java的电子点餐系统小程序(源码+数据库+文档)
  • 18、Gemini-Pentest-v1
  • MIT6.824 课程-MapReduce
  • 7个 C# 高阶用法详解:从基础到实战
  • [数据集][目标检测]乱堆物料检测数据集VOC+YOLO格式1143张1类别
  • 【SQL】百题计划:SQL对于空值的比较判断。
  • OJ在线判题系统项目笔记
  • 期望极大算法(Expectation Maximization Algorithm,EM)
  • 初级练习[4]:多表查询——表联结
  • 基于JAVA+SpringBoot+Vue的中药实验管理系统
  • 移动硬盘读取出错结构损坏?数据恢复实战指南
  • Web安全之HTTPS调用详解和证书说明案例示范
  • man命令学习记录
  • Linux三剑客-grep
  • 备忘录模式memento
  • 5-【JavaWeb】JUnit 单元测试及JUL 日志系统
  • 多人开发小程序设置体验版的痛点
  • 【Kubernetes】常见面试题汇总(七)
  • EmguCV学习笔记 C# 11.1 DnnInvoke类
  • 论文解读 | ACL2024 Outstanding Paper:因果指导的主动学习方法:助力大语言模型自动识别并去除偏见...
  • xLSTM模型学习笔记
  • woocommerce 调用当前product_tag 为标题