提取excel中的图片

Excel里插入图片是悬浮在单元格上的,如果超出格子大小了还不能跟着排序,而单元格大小是有上限的,用openxyl也查看不到图片,所以就想办法把图片提取出来。
首先先把后缀改成zip,然后解压缩,就可以看到图片都在xl/media这个目录里放着了
但是图片的顺序是按照插入时间来排的,并不一定是按照行列,如果你就是按顺序插入的话就可以直接用了,但如果不是的话,就还需要找到对应的行列号。
方法就是查看xml文件,这个文件是xl/drawings/drawing1.xml,这里面包含了rowcol,还有rId,其中rId就是图片的编号了,是从1开始计数的,而rowcol分别是所在单元格的行列,是从0开始计数的,只需要写一个程序就能把他对应上了,我这里简单贴一个demo。

# -*- coding: utf-8 -*-
from xml.dom.minidom import parse
import os
import shutil
import random 

# fileList = os.listdir(inputFolder)
questionDict = [''] * 660
anwserDict 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Microsoft Excel Automation来提取Excel文件图片并将其保存到本地。以下是一个简单的C++ MFC示例: ```c++ #include "afx.h" #include "afxdisp.h" #include <string> void ExtractPicturesFromExcel(CString strFilePath) { COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); try { // 创建Excel应用程序对象 _Application app; if (!app.CreateDispatch(_T("Excel.Application"))) { AfxMessageBox(_T("无法启动Excel应用程序")); return; } app.SetVisible(FALSE); // 隐藏Excel窗口 // 打开Excel文件 _Workbook workbook = app.get_Workbooks().Open(strFilePath, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); // 遍历每个工作表 Worksheets worksheets = workbook.get_Worksheets(); for (long i = 1; i <= worksheets.get_Count(); i++) { _Worksheet worksheet = worksheets.get_Item(COleVariant(i)); // 遍历每个图形 Shapes shapes = worksheet.get_Shapes(); for (long j = 1; j <= shapes.get_Count(); j++) { Shape shape = shapes.get_Item(COleVariant(j)); // 判断是否为图片 if (shape.get_Type() == msoPicture) { // 提取图片并保存到本地 std::wstring strPicturePath = L"C:\\Pictures\\" + std::to_wstring(i) + L"_" + std::to_wstring(j) + L".jpg"; shape.get_PictureFormat().SaveAs(strPicturePath.c_str()); } } } workbook.Close(covFalse, covOptional, covOptional); app.Quit(); } catch (COleException* e) { AfxMessageBox(_T("OLE异常发生")); e->Delete(); } catch (CException* e) { AfxMessageBox(_T("异常发生")); e->Delete(); } } ``` 在此示例,我们首先创建Excel应用程序对象,然后打开Excel文件并遍历每个工作表和每个图形。如果图形是图片,则提取它并将其保存到本地。在此示例,我们将所有图片保存到 "C:\\Pictures\\" 目录下,并使用工作表和图形的索引来命名文件。您可以根据自己的需求更改保存位置和文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值