首页 > 编程语言 >使用python对Excel表格某个区域保存为图片

使用python对Excel表格某个区域保存为图片

时间:2024-08-04 17:18:23浏览次数:13  
标签:sheetRange 表格 python Excel xlApp 图片

  实际工作中,我们经常会把表格某个区域(如:A1:F5)或某个图形保存为图片,如何用python自动做到这一点?不知屏幕前的小伙伴有没有遇到过类似的需求,此刻脑海里有木有一丢丢思路。

  python操作excel的第三方库有很多,个个都有各自的绝招和擅长的应用场景,简单罗列一下:

  • pyexcel:pyexcel是一个用于读写Excel、CSV和其他文件格式的库,提供了简单易用的接口。
  • pandas-ExcelWriter:这是Pandas库的一个模块,用于将数据写入Excel文件。
  • DataNitro:DataNitro是一个插件,可以在Excel中使用Python脚本,实现数据处理和分析。
  • pyxlsb:pyxlsb是一个用于读取Excel二进制文件(xlsb格式)的库。
  • Pandas:Pandas是一个强大的数据处理库,可以读取、写入和操作Excel文件。
  • OpenPyXL:OpenPyXL是一个专门用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
  • XlsxWriter:XlsxWriter是一个用于写入Excel文件的库,支持Excel 2007 xlsx文件格式。
  • xlrd / xlwt:这两个库分别用于读取和写入Excel文件,支持Excel 2003以前的xls文件格式。
  • pywin32(win32com.client):这个库可以显式(或隐式)地打开excel进行一列操作,语法基本完全沿用VBA中的语法,只需要稍加pythonic改造。

  这些库提供了诸多的功能和特性,几乎涉及到表格处理的方方面面,可以根据项目需求选择最适合的库来处理Excel表格。具体到我们今天的场景,使用win32com.client是最优解,因为它可以用到vba中已经提供的图片类API,比如-复制-选择性粘贴-粘贴为图片。

需要说明的是,为了区域转图片成功,必须做到以下几点:

1、当前工作表处于选中状态;

2、当前区域必须至少部分肉眼可见;

3、当前表格的显示比例需要默认为100%。

为了避免截图后的图片是漆黑(无色)的底色,建议提前将对应单元格区域的背景色设置为白色或者其他颜色。

有了这些前提后,就可以用单元格区域的copyPicture()方法将单元格区域数据写入剪贴板,再借助PIL库的ImageGrab.grabclipboard()方法从剪贴板获取数据,并保存为图片啦。

先看看CopyPicture的语法,如何设置参数。

 

完整的python示例代码如下:

 1 from PIL import ImageGrab
 2 import win32com.client as win32
 3 from win32api import RGB
 4 
 5 def capture_sheet_range_to_picture(sheetFilePath,sheetName,sheetRange,imgFilePath):
 6     '''从某个excel的某个表中的某个区域截图,并保存为图片
 7        sheetRange:str,如:"A1:E100" 
 8     '''
 9     # 启动Excel应用
10     xlApp =  win32.Dispatch('Excel.Application')
11     xlApp.Visible=True
12     # 打开目标Excel文件
13     workbook = xlApp.Workbooks.Open(sheetFilePath)
14     # 选择指定的工作表
15     detailSheet = workbook.Sheets(sheetName)
16     xlApp.ActiveWindow.ScrollRow = 2 #将水平滚动条拉到最上方
17     xlApp.ActiveWindow.ScrollColumn = 2 
18     xlApp.ActiveWindow.Zoom = 100 # 调整表格的缩放为100%显示
19 
20     detailSheet.Range(sheetRange).Interior.Color = RGB(255,255,255) # 纯白色
21     time.sleep(0.3)
22     # 将区域复制为图片
23 
24     try:
25         detailSheet.Range(sheetRange).CopyPicture(1,2)
26         img = ImageGrab.grabclipboard()  # 获取图片数据
28         img.save(imgFilePath)
29     except Exception as e:
30         # 如果截图失败,则重试一次
31         time.sleep(0.3)
32         detailSheet.Range(sheetRange).CopyPicture(1,2)
33         img = ImageGrab.grabclipboard()  # 获取图片数据
34         img.save(imgFilePath)
35     # 关闭工作簿并退出Excel
36     workbook.Close(SaveChanges=False)
37     xlApp.Quit()
38     return 

  这段代码【信息量】很大,您可别不信,都是小爬我一遍遍踩坑才得来的宝贵经验哟,相信您已经受到了不少启发,那就动手试试吧,一定会收获满满。

快来关注本公众号 获取更多爬虫、数据分析的知识!

标签:sheetRange,表格,python,Excel,xlApp,图片
From: https://www.cnblogs.com/new-june/p/18289209

相关文章

  • Python Matplotlib Quiver 绘制向量场
    我正在尝试使用Matplotlib的quiver函数绘制引力矢量场,我有一个函数可以计算由任意数量的质量引起的引力场,但是在绘制它时,我在质量位置周围得到了奇怪的结果。出于矢量绘图的目的,该函数返回x和y方向上的场分量、它们的x和y坐标以及2D场数组,这对于绘图不是必需的,但对......
  • 完全用python 实现消息中间件2
    为了完善这个简单的消息中间件,我们可以添加以下功能:消息持久化:虽然在这个示例中我们不会使用数据库,但我们可以将消息保存到文件中,以模拟持久化存储。消息确认:添加一个机制来确认消息已经被消费。并发控制:确保在多线程或多进程环境中消息的安全处理。以下是更新后的代码:fr......
  • 16:Python一些常用的变量命名
    变量名的命名直接影响到程序的易读性,好的变量名应该简洁、易于理解。一、单字符变量名数学中通常用x,y来表示坐标,同样的,在命名变量时,可以使用一些具有特定含义的单个字符。这样的变量名兼具有意义和极简两大优点,作为编程人员应熟记。具体列举如下。i、j、k:数值(integer(整数))......
  • 15:Python数据类型的综合对比整理
    #Python有六个标准的数据类型:#Numbers(数字)int#String(字符串)str字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串#List(列表)list中号括起来,逗号分开,可以是数字、字符串、列表、布尔值,列表可以嵌套任何类型,列表有序元素可以被修改#Tup......
  • 用Python打造精彩动画与视频, 6.2 使用Manim进行数学和科学可视化
     6.2使用Manim进行数学和科学可视化Manim(MathematicalAnimationEngine)是一款强大的动画制作工具,尤其适用于数学和科学领域的可视化。它由3Blue1Brown的GrantSanderson开发,旨在通过动画演示复杂的数学概念,使其更易于理解。使用Manim,用户可以创建高质量的数学动画,从简单的......
  • 用Python打造精彩动画与视频,5.3 使用Manim创建简单动画
     5.3使用Manim创建简单动画在这一节中,我们将介绍如何使用Manim创建简单的动画。我们将从基本的场景构建开始,然后演示如何添加动画效果。通过这些示例,你将能够掌握使用Manim创建各种动画的基本技能。5.3.1创建一个简单的场景Manim中的基本单元是场景(Scene)。每个场景都是一......
  • 用Python打造精彩动画与视频, 5.2 安装和设置Manim
     5.2安装和设置ManimManim是一个强大的动画库,用于创建高质量的数学动画。它最初由3Blue1Brown的GrantSanderson开发,并被广泛用于教育和展示。以下是安装和设置Manim的详细步骤。5.2.1安装ManimManim需要Python环境和一些依赖库。在安装Manim之前,请确保已经......
  • 用Python打造精彩动画与视频,6.1 复杂动画场景的构建
     第六章:探索Manim的潜力6.1复杂动画场景的构建在本节中,我们将深入探索如何使用Manim构建复杂的动画场景。Manim是一款功能强大的Python库,广泛应用于数学可视化和教育视频制作。通过理解并掌握Manim的高级功能和技巧,你将能够创建出引人入胜且具有高可读性的动画场景。6.1.1......
  • 在 Python 中从 HTML 中抓取嵌入的 Google Sheet
    这对我来说相对棘手。我正在尝试提取来自python中的google工作表的嵌入表。这是链接我不拥有该工作表,但它是公开可用的。这是迄今为止我的代码,当我输出标题时,它向我显示“”。任何帮助将不胜感激。最终目标是将此表转换为pandasDF。多谢你们importlx......
  • 如何使用 Python 在 Google 或 DuckDuckGo 中快速获取答案
    我有一个人工智能助手项目,我希望它在互联网上搜索。我想使用适用于Python的GoogleQuickAnswerBox或DuckDuckGoInstantAnswerAPI。我看到了其他问题,但它们对我没有多大帮助。这是我想要实现的一个示例:问题:什么是长颈鹿?Google的答案:DuckDuckGo的......