发布时间:2023-10-17 12:30
Qt 之 QAxObject 读写 excel
如何配置 QtXlsx 的两种方法
要使用QtXlsx
,需要引入这个模块,不然是用不了的,引入方法,在工程 pro 文件中加入 QT += xlsx
即可
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//如果需要修改已存在的文件,必须在定义对象的时候指定文件名
QXlsx::Document xlsx("book1.xlsx");
//单元格样式
QXlsx::Format format1;
//红色文字
format1.setFontColor(QColor(Qt::green));
//背景色
format1.setPatternBackgroundColor(QColor(Qt::red));
//字体大小
format1.setFontSize(15);
//水平居中
format1.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
//边框样式
format1.setBorderStyle(QXlsx::Format::BorderDashDotDot);
//写入文字,使用 format1 定义的样式
xlsx.write("A1", "Hello", format1);
xlsx.write("B1", "Qt", format1);
//设置另一种样式
QXlsx::Format format2;
//加粗
format2.setFontBold(true);
//双下划线
format2.setFontUnderline(QXlsx::Format::FontUnderlineDouble);
//填充
format2.setFillPattern(QXlsx::Format::PatternLightUp);
//使用 format2 样式写入文字
xlsx.write("D5", "=44+33", format2);
xlsx.write("B3", true, format2);
//选择表格 Sheet2,如果不存在,则添加
if(!xlsx.selectSheet("Sheet2")){
xlsx.addSheet("Sheet2");
}
//写入数据,表格行列都是从1 开始,0,0分别是行首列首
for (int i=1; i<20; ++i) {
xlsx.write(i, 1, i);//A1:A19
xlsx.write(i, 2, i*i);//B1:B19
xlsx.write(i, 3, i*i*i);//C1:C19
}
//在 E:5 插入一个 300*300 的图表
QXlsx::Chart *pieChart = xlsx.insertChart(5, 5, QSize(300, 300));
//设置图标类型
pieChart->setChartType(QXlsx::Chart::CT_Line);
//使用刚才添加的数据作为数据源
pieChart->addSeries(QXlsx::CellRange("A1:A19"));
pieChart->addSeries(QXlsx::CellRange("B10:B19"));
pieChart->addSeries(QXlsx::CellRange("C10:C19"));
//新建一个大小为 40*100 的 image
QImage image(40, 100, QImage::Format_RGB32);
//填充红色
image.fill(Qt::red);
//插入图片
xlsx.insertImage(25, 5, image);
//打印最后一行,需要往后面追加数据的这个非常有用
qDebug()<< "row:"<< xlsx.dimension().lastRow();
//保存
xlsx.save();
return 0;
}