提交 cd3bd513 编写于 作者: mahuifa's avatar mahuifa

新功能:完成XlsxDemo中Test5功能

    1、完成Test5 Excel插入读取图片功能;
上级 4a8ade70
......@@ -11,17 +11,20 @@ FORMS += \
$$PWD/test1.ui \
$$PWD/test2.ui \
$$PWD/test3.ui \
$$PWD/test4.ui
$$PWD/test4.ui \
$$PWD/test5.ui
HEADERS += \
$$PWD/Interface.h \
$$PWD/test1.h \
$$PWD/test2.h \
$$PWD/test3.h \
$$PWD/test4.h
$$PWD/test4.h \
$$PWD/test5.h
SOURCES += \
$$PWD/test1.cpp \
$$PWD/test2.cpp \
$$PWD/test3.cpp \
$$PWD/test4.cpp
$$PWD/test4.cpp \
$$PWD/test5.cpp
#include "test5.h"
#include "ui_test5.h"
#include <QDebug>
#include <QMessageBox>
#include <xlsxdocument.h>
QXLSX_USE_NAMESPACE
#define EXCEL_NAME "image.xlsx" // 本Demo使用的Excel文件名
Test5::Test5(QWidget *parent) :
InterFace(parent),
ui(new Ui::Test5)
{
ui->setupUi(this);
this->setWindowTitle("QXlsx在工作表中插入、读取图片");
this->setToolTip(this->windowTitle());
}
Test5::~Test5()
{
delete ui;
}
QString Test5::getExcelName()
{
return EXCEL_NAME;
}
/**
* @brief 插入图片
*/
void Test5::on_but_insert_clicked()
{
Document xlsx;
QImage image1("://image/C++.PNG");
QImage image2("://image/Qt.PNG");
qDebug() << "插入图片:"<<xlsx.insertImage(3, 3, image1); // 在3行3列单元格右下角位置插入图片
qDebug() << "插入图片:"<<xlsx.insertImage(23, 3, image2); // 在23行3列单元格右下角位置插入图片
if(xlsx.saveAs(EXCEL_NAME)) // 如果文件已经存在则覆盖
{
qInfo() << "Excel保存成功!";
}
else
{
qWarning() << "Excel保存失败!";
}
}
/**
* @brief 打开Excel文件,并查询当前Sheet中图片数量
*/
void Test5::on_but_getCount_clicked()
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
uint count = xlsx.getImageCount(); // 查询当前Sheet中图片数量
QMessageBox::about(this, "插入图片数", QString("共有%1张图片!").arg(count));
}
/**
* @brief 使用方法一读取Excel中的图片(通过索引读取)
* 注意:这里索引从1开始,而不是从0开始(Qxlsx的一些小bug)
*/
void Test5::on_but_getImage1_clicked()
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
QImage image;
bool ret = xlsx.getImage(1, image); // 读取当前Sheet中第1张图片(注意:索引是从1开始,而不是从0开始)
if(ret)
{
ui->label->setPixmap(QPixmap::fromImage(image)); // 显示读取到的图片
}
else
{
QMessageBox::warning(this, "错误", "读取图片失败,可能是不存在!");
}
}
/**
* @brief 使用方法一读取Excel中的图片(通过行列号读取)
*/
void Test5::on_pushButton_4_clicked()
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
QImage image;
bool ret = xlsx.getImage(23, 3, image); // 读取当前Sheet中第2张图片
if(ret)
{
ui->label->setPixmap(QPixmap::fromImage(image)); // 显示读取到的图片
}
else
{
QMessageBox::warning(this, "错误", "读取图片失败,可能是不存在或位置错误!");
}
}
/******************************************************************************
* @文件名 test5.h
* @功能 1、在当前Sheet指定位置插入图片;
* 2、获取当前Sheet中图片个数;
* 3、通过索引方式和行列号方式读取当前Sheet中的图片。
*
* @开发者 mhf
* @邮箱 1603291350@qq.com
* @时间 2022/07/06
* @备注
*****************************************************************************/
#ifndef TEST5_H
#define TEST5_H
#include <QWidget>
#include "Interface.h"
namespace Ui {
class Test5;
}
class Test5 : public InterFace
{
Q_OBJECT
public:
explicit Test5(QWidget *parent = nullptr);
~Test5();
QString getExcelName() override;
private slots:
void on_but_insert_clicked();
void on_but_getCount_clicked();
void on_but_getImage1_clicked();
void on_pushButton_4_clicked();
private:
Ui::Test5 *ui;
};
#endif // TEST5_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Test5</class>
<widget class="QWidget" name="Test5">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>443</width>
<height>341</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>381</width>
<height>161</height>
</rect>
</property>
<property name="text">
<string>image</string>
</property>
</widget>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>80</x>
<y>200</y>
<width>201</width>
<height>131</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="but_insert">
<property name="text">
<string>插入图片</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="but_getCount">
<property name="text">
<string>获取图片数</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="but_getImage1">
<property name="text">
<string>从Excel获取图片1</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>从Excel获取图片2</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
......@@ -44,8 +44,11 @@ INCLUDEPATH += $$PWD/QXlsx
include($$PWD/TestXlsx/TestXlsx.pri) # QXlsx使用Demo
INCLUDEPATH += $$PWD/TestXlsx
# 使用utf-8编码
# 使用utf-8编码,这种用法好像只在msvc2017以后才有效
msvc {
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
RESOURCES += \
appendix.qrc
<RCC>
<qresource prefix="/">
<file>image/C++.PNG</file>
<file>image/Qt.PNG</file>
</qresource>
</RCC>
......@@ -72,6 +72,11 @@
<string>插入图表</string>
</attribute>
</widget>
<widget class="Test5" name="tab_5">
<attribute name="title">
<string>插入图片</string>
</attribute>
</widget>
</widget>
</item>
</layout>
......@@ -101,6 +106,12 @@
<header>test4.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>Test5</class>
<extends>QWidget</extends>
<header>test5.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册