社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

OpenClaw写的Execl每个工作表转png图片Python源代码

GISAI • 5 月前 • 196 次点击  
"""
Excel 工作表导出为长图片脚本
功能:将 Excel 文件中的每个工作表导出为 PNG 长图片
"""

import os
import win32com.client as win32

# ============ 配置区域 ============
源文件路径
source_file = r"E:\2026\Pro\data\chp9excel\合并工作表.xlsx"

输出文件夹(桌面\pic
desktop = os.path.join(os.environ['USERPROFILE'], 'Desktop')
pic_folder = os.path.join(desktop, 'pic')
# =================================

def export_sheets_to_png(source_file, pic_folder):
"""
 Excel 每个工作表导出为 PNG 长图片

    参数:
        source_file: Excel 源文件路径
        pic_folder: 输出图片文件夹
    """
    # 创建输出文件夹
os.makedirs(pic_folder, exist_ok=True)
    print(f"输出文件夹:{pic_folder}")

打开 Excel 应用
excel = win32.Dispatch('Excel.Application')
    excel.Visible = True   需要可见才能正确复制图片
excel.DisplayAlerts = False

打开工作簿
wb = excel.Workbooks.Open(source_file)

遍历每个工作表
for i, ws in enumerate(wb.Worksheets, start=1):
        ws_name = ws.Name
清理文件名中的非法字符(\/:*?"<>|
safe_name = "".join([c for  in ws_name if not in r'<>:"/\|*'])
        print(f"\n处理工作表 {i}{ws_name}")

激活工作表
ws.Activate()

获取已用区域
used_range = ws.UsedRange
        last_row = used_range.Rows.Count + used_range.Row - 1
last_col = used_range.Columns.Count + used_range.Column - 1

检查是否有数据
if last_row > and last_col > 0:
选择已用区域
range_addr = f"A1:{ws.Cells(last_row, last_col).Address}"
range_obj = ws.Range(range_addr)
            range_obj.Select()

复制为图片(屏幕显示质量,图片格式)
range_obj.CopyPicture(Appearance=1, Format=1)

创建临时图表对象来保存图片
ch = ws.ChartObjects().Add(00, range_obj.Width, range_obj.Height)
            ch.Chart.Paste()

导出为 PNG
png_path = os.path.join(pic_folder, f"{safe_name}.png")
            ch.Chart.Export(png_path, 'PNG')

删除临时图表
ch.Delete()

            print(f"  ✓ 已保存:{png_path}")
else:
            print(f"  ⊘ 跳过空工作表")

关闭工作簿和 Excel
wb.Close(False)
    excel.Quit()

    print(f"\n✅ 所有工作表已导出到:{pic_folder}")


if __name__ == "__main__":
    export_sheets_to_png(source_file, pic_folder)



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/194002