linux qt excel 格式,Qt Excel库xlsx写入单元格样式及使用

Qt xlsx 库使用前言

因为我对 xls 格式不做兼容要求,所以选取了此库。具体需要实现的功能,写入 Excel 样式。

Qt xlsx 库写入单元格样式方法

/*单元格边框样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);

/*单元格设置字体样式*/

format.setFontColor(QColor("#FFFFFF"));

format.setFontSize(11);

format.setFontBold(false);

format.setFontName(QStringLiteral("Calibri"));

/*单元格背景颜色*/

format.setPatternBackgroundColor(QColor("#00B050"));

format.setPatternForegroundColor(Qt::red);

/*单元格居中方式*/

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);

Qt xlsx 库使用简单例子

.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

#include "xlsxdocument.h"

#include "xlsxformat.h"

#include "xlsxcellrange.h"

#include "xlsxchart.h"

#include "xlsx/xlsxformat.h"

#include "xlsx/xlsxformat_p.h"

#include

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

QXlsx::Format setFormatStyleBlue();

QXlsx::Format setFormatStyleRed();

QXlsx::Format setHeaderFormatStyle();

QXlsx::Format setSingleFormatStyle();

QXlsx::Format setDoubleFormatStyle();

void getInitData();

void initMakeExcel(QXlsx::Document &xlsx);

private:

Ui::MainWindow *ui;

QMap > m_gMapData;

};

#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

/***

* https://www.cnblogs.com/wangjian8888/p/9176662.html

*/

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

getInitData();

QXlsx::Document xlsx("book1.xlsx");/*打开一个 book1 的文件*/

xlsx.setRowHeight(1, 30);

xlsx.setRowHeight(2, 25);

xlsx.setRowHeight(3, 25);

initMakeExcel(xlsx);

// xlsx.write(1, 1, 12345, formatHeader);/*写入文字,应该刚才设置的样式*/

// xlsx.write(1, 2, 12345, formatHeader);/*写入文字,应该刚才设置的样式*/

// xlsx.write(1, 3, 12345, formatHeader);/*写入文字,应该刚才设置的样式*/

// xlsx.write(1, 4, 12345, formatHeader);/*写入文字,应该刚才设置的样式*/

// xlsx.write(1, 5, 12345, formatHeader);/*写入文字,应该刚才设置的样式*/

// xlsx.write(2, 1, 12345, formatSingal);/*写入文字,应该刚才设置的样式*/

// xlsx.write(2, 2, 888, formatSingal);/*写入文字,应该刚才设置的样式*/

// xlsx.write(2, 3, 12345, formatSingal);/*写入文字,应该刚才设置的样式*/

// xlsx.write(2, 4, 12345, formatSingal);/*写入文字,应该刚才设置的样式*/

// xlsx.write(2, 5, 12345, formatBlue);/*写入文字,应该刚才设置的样式*/

// xlsx.write(3, 1, 12345, formatDouble);/*写入文字,应该刚才设置的样式*/

// xlsx.write(3, 2, 12345, formatDouble);/*写入文字,应该刚才设置的样式*/

// xlsx.write(3, 3, 12345, formatDouble);/*写入文字,应该刚才设置的样式*/

// xlsx.write(3, 4, 12345, formatDouble);/*写入文字,应该刚才设置的样式*/

// xlsx.write(3, 5, 12345, formatRed);/*写入文字,应该刚才设置的样式*/

// QXlsx::Format format2;/*重新设置另一个单元的样式*/

// format2.setFontBold(true);/*设置加粗*/

// format2.setFontUnderline(QXlsx::Format::FontUnderlineDouble);/*下双划线*/

// format2.setFillPattern(QXlsx::Format::PatternLightUp);/*填充方式*/

// xlsx.write("A4", "=44+33", format2);/*写入文字,应该刚才设置的样式*/

// xlsx.write("C4", true, format2);

xlsx.saveAs("book1.xlsx");/*保存*/

// QXlsx::Document xlsx2("Book1.xlsx");/*复制 book1 到 book2*/

// xlsx2.saveAs("Book2.xlsx");

}

MainWindow::~MainWindow()

{

delete ui;

}

QXlsx::Format MainWindow::setFormatStyleBlue()

{

QXlsx::Format format;/*设置该单元的样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);/*边框样式*/

format.setFontColor(QColor("#FFFFFF"));/*文字为红色*/

format.setFontSize(11);/*设置字体大小*/

format.setFontBold(false);

format.setFontName(QStringLiteral("Calibri"));

format.setPatternBackgroundColor(QColor("#00B050"));/*背景颜色*/

format.setPatternForegroundColor(Qt::red);

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*横向居中*/

return format;

}

QXlsx::Format MainWindow::setFormatStyleRed()

{

QXlsx::Format format;/*设置该单元的样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);/*边框样式*/

format.setFontColor(QColor("#FFFFFF"));/*文字为红色*/

format.setFontSize(11);/*设置字体大小*/

format.setFontBold(false);

format.setFontName(QStringLiteral("Calibri"));

format.setPatternBackgroundColor(QColor("#FF0000"));/*背景颜色*/

format.setPatternForegroundColor(Qt::red);

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*横向居中*/

return format;

}

QXlsx::Format MainWindow::setHeaderFormatStyle()

{

QXlsx::Format format;/*设置该单元的样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);/*边框样式*/

format.setFontColor(QColor("#000000"));/*文字为红色*/

format.setFontSize(12);/*设置字体大小*/

format.setFontBold(true);

format.setFontName(QStringLiteral("Calibri"));

format.setPatternBackgroundColor(QColor("#A6A6A6"));/*背景颜色*/

format.setPatternForegroundColor(Qt::red);

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*横向居中*/

return format;

}

QXlsx::Format MainWindow::setSingleFormatStyle()

{

QXlsx::Format format;/*设置该单元的样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);/*边框样式*/

format.setFontColor(QColor("#000000"));/*文字为红色*/

format.setFontSize(11);/*设置字体大小*/

format.setFontBold(false);

format.setFontName(QStringLiteral("Calibri"));

format.setPatternBackgroundColor(QColor("#FFFFFF"));/*背景颜色*/

format.setPatternForegroundColor(Qt::red);

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*横向居中*/

return format;

}

QXlsx::Format MainWindow::setDoubleFormatStyle()

{

QXlsx::Format format;/*设置该单元的样式*/

format.setBorderColor(QColor("#000000"));

format.setBorderStyle(QXlsx::Format::BorderThin);/*边框样式*/

format.setFontColor(QColor("#000000"));/*文字为红色*/

format.setFontSize(11);/*设置字体大小*/

format.setFontBold(false);

format.setFontName(QStringLiteral("Calibri"));

format.setPatternBackgroundColor(QColor("#F2F2F2"));/*背景颜色*/

format.setPatternForegroundColor(Qt::red);

format.setVerticalAlignment(QXlsx::Format::AlignVCenter);

format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*横向居中*/

return format;

}

void MainWindow::getInitData()

{

QList headerList;

headerList << "Sensor" << "MUX" << "Sample"

<< "AD" << "IOC" << "CPU" << "Result";

for(int row = 1; row < 10; ++row)

{

if(row == 1)

{

m_gMapData.insert(row, headerList);

}

else

{

QString mm = "0";

if(row%2 == 0)

{

mm = "0";

}

else

{

mm = "1";

}

QList rowData;

rowData << "2" << "5" << "3" << "6" << "5" << "6" << mm;

m_gMapData.insert(row, rowData);

}

}

}

void MainWindow::initMakeExcel(QXlsx::Document &xlsx)

{

QMapIterator > mapItor(m_gMapData);

QXlsx::Format formatHeader, formatBlue, formatRed, formatSingal, formatDouble;/*设置该单元的样式*/

formatHeader = setHeaderFormatStyle();

formatBlue = setFormatStyleBlue();

formatRed = setFormatStyleRed();

formatSingal = setSingleFormatStyle();

formatDouble = setDoubleFormatStyle();

while (mapItor.hasNext()) {

mapItor.next();

int rowIndex = mapItor.key();

QList rowList = mapItor.value();

if(rowIndex == 1)

{

for(int j = 0; j < rowList.length(); j++)

{

xlsx.write(rowIndex, j+1, rowList.at(j), formatHeader);

}

}

else

{

for(int i = 0; i < rowList.length(); i++)

{

if(i == rowList.length() - 1)

{

if(rowList.at(i).toInt() == 0)

{

xlsx.write(rowIndex, i+1, rowList.at(i).toInt(), formatRed);

}

else

{

xlsx.write(rowIndex, i+1, rowList.at(i).toInt(), formatBlue);

}

}

else

{

if(rowIndex%2 == 0)

{

xlsx.write(rowIndex, i+1, rowList.at(i).toInt(), formatDouble);

}

else

{

xlsx.write(rowIndex, i+1, rowList.at(i).toInt(), formatSingal);

}

}

}

}

}

}

Qt xlsx 库使用简单例子最终效果

773.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值