网站建设价格费用,大学教学应用网站开发现状,wordpress模版怎么设计,中国最新24小时军情新闻前言 读取excel表格中的图片的需求比较小众#xff0c;QXlsx可以操作excel文档#xff0c;进行图片读取、插入操作#xff0c;本文主要分享单独提取图片和遍历表格提取文字和图片。
源码下载
github
开发环境准备
把下载的代码中的QXlsx目录#xff0c;整个拷贝到所创建…
前言 读取excel表格中的图片的需求比较小众QXlsx可以操作excel文档进行图片读取、插入操作本文主要分享单独提取图片和遍历表格提取文字和图片。
源码下载
github
开发环境准备
把下载的代码中的QXlsx目录整个拷贝到所创建的qt项目下与.pro文件同层的目录下。 然后在.pro文件中加入引入目录的代码
INCLUDEPATH $$PWD/QXlsx
include($$PWD/QXlsx/QXlsx.pri) 功能讲解
在main.cpp中引用头文件
#include xlsxdocument.h
#include xlsxworksheet.h
只获取excel的图片
主要用到两个关键功能
uint Document::getImageCount()
功能说明 获取当前活动工作表中图片的个数返回值 工作表中图片个数
bool Document::getImage(int imageIndex, QImage img)
功能说明 以【索引】方式获取当前活动工作表中索引为imageIndex的图片参数imageIndex需要获取的图片的索引从1开始参数img 用于保存获取的图片返回值 true获取图片成功false获取图片失败
void getExcelImages(const QString excelfilePath){QXlsx::Document xlsx(excelfilePath);//打开excel文件QXlsx::Worksheet* sheet xlsx.currentWorksheet();if (!sheet) {qDebug() Failed to load sheet!;return;}uint count xlsx.getImageCount();// 查询当前Sheet中图片数量qDebug() 当前Sheet中图片数量 count;//遍历图片并保存QImage image;for (int num 1; num count; num) {//索引是从1开始而不是从0开始bool retxlsx.getImage(num, image);if(rettrue){QString fullPathQString(./excelimage%1.png).arg(num);image.save(fullPath);}}
}
遍历表格提取文字和图片
主要用到1个关键功能
bool Document::getImage(int row, int col, QImage img) 功能说明 以【行列号】方式获取当前活动工作表中位于row行、col列的图片 参数row 图像的左上角位于row行从1开始取值时想要减去1 参数col 图像的左上角位于col行从1开始取值时想要减去1 参数img 用于保存获取的图片 返回值 true获取图片成功false获取图片失败
void getExcelcontentandImages(const QString filePath) {QXlsx::Document xlsx(filePath);QXlsx::Worksheet* sheet xlsx.currentWorksheet();if (!sheet) {qDebug() Failed to load sheet!;return;}QXlsx::CellRange range sheet-dimension();int imagenum1;for (int row range.firstRow(); row range.lastRow(); row) {QString showmsgQString(line %1:).arg(row);for (int col range.firstColumn(); col range.lastColumn(); col) {QVariant cellValue sheet-read(row, col);if (cellValue.canConvertQString()) {//判断是不是字符串类型//qDebug() Cell( row , col ): cellValue;showmsg cellValue.toString();showmsg ;}else{//看看是不是图片如果是就保存qDebug() row col;QImage image;bool retxlsx.getImage(row-1,col-1, image);//图片的行和列都要减去1才能获取到图片if(rettrue){showmsg 图片保存;QString fullPathQString(./excelimage%1.png).arg(imagenum);image.save(fullPath);imagenum;//累加}}}qDebug() showmsg;}
}
结尾 本篇是一位读者在我的博文【QT常用技术讲解】excel表格处理两种方式QAxObject和qtxlsx 中提问QXlsx怎么读取表格中图片经过查看QXlsx的源码xlsxdocument.h中发现没有获取图片修改的函数然后到github上下载新的代码发现是有的如下图所示如果下载下来测试是可行的代码参见资源附件。