自动化办公 | 快速从Excel中提取图片并匹配命名

本文介绍了如何使用Python自动化地从Excel中提取图片并根据商品编码进行命名。通过结合pandas和openpyxl库,解决了Excel图片提取时的去重问题,实现了与数据匹配的高效解决方案。
摘要由CSDN通过智能技术生成

大家好,我是小五????

关于自动化办公,之前我思考过好久。到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求?

其实挺难断定的,可能大部分人用不到的一个功能,对于刚需的人却是救命稻草!

比如今天的这个需求????

案例需求

一个群友在交流群里提出了这样一个问题

这是他给出的示例文件,其中F列的商品编码,G列是商品图片。希望能够将G列的图片提取出来,并以同行的F列商品编码命名。

下面给大家讲讲,如何轻松提取Excel的图片????

最简单的解决办法

其中最简单的办法就是:将原Excel文件后缀名改为压缩包格式(zip、rar等)

这时候只需要解压此压缩包,再依次打开【xl】→【media】文件夹,就可以看到一堆图片。

这些图片就是原本Excel中插入的图片。

是不是很简单࿱

在Java,Apache POI库是一个广泛用于处理Microsoft Office格式文件(如Excel、Word等)的强大工具。如果你想将浮动图片嵌入到Excel单元格,并将其视为单元格的一部分,而不是作为单独的对象存储,POI提供了一些方法来实现这个目标。 `HSSFCell` 和 `HSSFPatriarch` 类可以用来创建嵌入式图像。以下是基本步骤: 1. 首先,你需要创建一个 `Workbook` 对象并打开工作簿: ```java HSSFWorkbook workbook = new HSSFWorkbook(); ``` 2. 然后,选择一个工作表并获取一个 `Row` 对象来添加新的行: ```java HSSFSheet sheet = workbook.createSheet("Sheet1"); HSSFRow row = sheet.createRow(0); ``` 3. 创建一个新的 `HSSFCell` 对象,通常这是 `HSSFDataFormat` 对象的一个实例,以便设置单元格的格式: ```java HSSFDataFormat df = workbook.createDataFormat(); HSSFCellStyle style = workbook.createCellStyle(); style.setDataFormat(df.getFormat("$#.##;[.-]0.00")); ``` 4. 使用 `HSSFPatriarch` 添加图片,例如从本地路径加载: ```java HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); InputStream inputStream = new FileInputStream("path_to_your_image.jpg"); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, row.getFirstColumn(), row.getRowNum(), row.getLastColumn(), row.getRowNum()); Image image = ImageFactory.createImage(inputStream); patriarch.addPicture(image, anchor); ``` 5. 将包含图片的单元格插入行: ```java HSSFCell cell = row.createCell((short) 0); // 设置第一列 cell.setCellValue(""); cell.setCellStyle(style); // 现在,图片已经被嵌入到单元格了 ``` 6. 最后,记得保存你的工作簿: ```java workbook.write(new FileOutputStream("output.xlsx")); workbook.close(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱小五是凹凸君呀

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值