Qt读写Excel–QXlsx合并单元格、文本对齐7
文章目录
- Qt读写Excel--QXlsx合并单元格、文本对齐7
-
- @[toc]
- 1、概述
- 2、准备工作
- 3、函数说明
- 4、示例代码
-
- 5、实现效果
- 6、源代码
1、概述
2、准备工作
Qt读写Excel–QXlsx基本使用1 |
Qt读写Excel–QXlsx编译为静态库2 |
3、函数说明
注意:执行了操作要保存才生效。⛔
-
bool Document::mergeCells(const CellRange &range, const Format &format) |
- 功能说明: 合并range范围的单元格,合并后用第一个单元格的数据填充,其它单元格的数据会被清除;可通过format设置单元格格式。
- 参数range: 需要合并的单元格范围;
- 参数format: 单元格的格式(如文本对齐、字体大小、颜色等);
- 返回值:true:合并单元格成功,false:合并单元格失败;
-
bool Document::unmergeCells(const CellRange &range) |
- 功能说明: 取消合并单元格;
- 参数range: 取消合并单元格的范围,必须与合并单元格时输入的【范围一致】,否则取消合并单元格失败;
- 返回值: true:取消合并单元格成功,false:取消合并单元格失败;
-
void Format::setHorizontalAlignment(HorizontalAlignment align) |
- 功能说明: 将水平对齐设置为给定的对齐;
- 参数align: 由
Format::HorizontalAlignment
枚举指定水平对齐方式;
-
void Format::setVerticalAlignment(VerticalAlignment align) |
- 功能说明: 使用给定的对齐设置垂直对齐;
- 参数align: 由
Format::VerticalAlignment
枚举指定垂直对齐方式;
4、示例代码
4.1 .h文件
#ifndef TEST6_H
#define TEST6_H
#include
#include "Interface.h"
namespace Ui {
class Test6;
}
class Test6 : public InterFace
{
Q_OBJECT
public:
explicit Test6(QWidget *parent = nullptr);
~Test6();
QString getExcelName() override;
private slots:
void on_but_merge_clicked();
void on_but_unmerge_clicked();
void on_com_alignmentH_activated(int index);
void on_com_alignmentV_activated(int index);
private:
Ui::Test6 *ui;
};
#endif
4.2 .cpp文件
#include "test6.h"
#include "ui_test6.h"
#include
#include
#include
#include
QXLSX_USE_NAMESPACE
#define EXCEL_NAME "test6.xlsx"
Test6::Test6(QWidget *parent) :
InterFace(parent),
ui(new Ui::Test6)
{
ui->setupUi(this);
this->setWindowTitle("QXlsx合并单元格、文本对齐");
this->setToolTip(this->windowTitle());
}
Test6::~Test6()
{
delete ui;
}
QString Test6::getExcelName()
{
return EXCEL_NAME;
}
void Test6::on_but_merge_clicked()
{
Document xlsx;
xlsx.write("B3", "hello");
xlsx.write("C3", "123");
xlsx.write("B8", 123456);
xlsx.write("E8", "北风卷地白草折,胡天八月即飞雪");
xlsx.mergeCells("B3:F6");
xlsx.mergeCells(CellRange(8, 2, 20, 3));
Format format;
format.setHorizontalAlignment(Format::AlignHCenter);
format.setVerticalAlignment(Format::AlignVCenter);
xlsx.mergeCells("E8:F20", format);
if(xlsx.saveAs(EXCEL_NAME))
{
qInfo() << "Excel保存成功!";
ui->but_unmerge->setEnabled(true);
ui->com_alignmentH->setEnabled(true);
ui->com_alignmentV->setEnabled(true);
}
else
{
qWarning() << "Excel保存失败!";
}
}
void Test6::on_but_unmerge_clicked()
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
xlsx.unmergeCells("B3:F6");
if(xlsx.save())
{
qInfo() << "Excel保存成功!";
}
else
{
qWarning() << "Excel保存失败!";
}
}
void Test6::on_com_alignmentH_activated(int index)
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
Format format = xlsx.cellAt(8, 2)->format();
format.setHorizontalAlignment(Format::HorizontalAlignment(index));
xlsx.write(8, 2, xlsx.read(8, 2), format);
if(xlsx.save())
{
qInfo() << "Excel保存成功!";
}
else
{
qWarning() << "Excel保存失败!";
}
}
void Test6::on_com_alignmentV_activated(int index)
{
Document xlsx(EXCEL_NAME);
if(!xlsx.load())
{
QMessageBox::warning(this, "错误", QString("打开%1失败,可能是文件不存在!").arg(EXCEL_NAME));
return;
}
Format format = xlsx.cellAt(8, 2)->format();
format.setVerticalAlignment(Format::VerticalAlignment(index));
xlsx.write(8, 2, xlsx.read(8, 2), format);
if(xlsx.save())
{
qInfo() << "Excel保存成功!";
}
else
{
qWarning() << "Excel保存失败!";
}
}
5、实现效果
6、源代码
gitee
github