概述
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 <QMainWindow>
- #include "xlsxdocument.h"
- #include "xlsxformat.h"
- #include "xlsxcellrange.h"
- #include "xlsxchart.h"
- #include "xlsx/xlsxformat.h"
- #include "xlsx/xlsxformat_p.h"
- #include <QDebug>
- 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<int, QList<QString> > 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<QString> 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<QString> rowData;
- rowData << "2" << "5" << "3" << "6" << "5" << "6" << mm;
- m_gMapData.insert(row, rowData);
- }
- }
- }
- void MainWindow::initMakeExcel(QXlsx::Document &xlsx)
- {
- QMapIterator<int, QList<QString> > 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<QString> 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 库使用简单例子最终效果
最后
以上就是难过灯泡为你收集整理的Qt Excel库xlsx写入单元格样式及使用Qt xlsx 库使用前言的全部内容,希望文章能够帮你解决Qt Excel库xlsx写入单元格样式及使用Qt xlsx 库使用前言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复