Qt使用Qtxlsx第三方庫


使用說明

  1. 下載 qtxlsx

  2. 加載 qtxlsx
    編輯 pro 文件

## 添加qtxlsx模塊
include(3RDMOD/qtxlsx/qtxlsx.pri);

## 還有另外一種編譯QtXlsx模塊的方式,操作太麻煩。不如直接加載到項目一起編譯。
## 添加頭文件
#include "xlsxdocument.h"

int main()
{
    {
    //Create a new .xlsx file.
    QXlsx::Document xlsx;
    ## 使用單元格坐標, 起始坐標為 1,1 不是0!
    xlsx.wirte(1,10, "xxx");
    ## 使用單元格坐標名
    xlsx.write("A1", "Hello Qt!");
    xlsx.write("A2", 12345);
    xlsx.write("A3", "=44+33");
    xlsx.write("A4", true);
    xlsx.write("A5", "http://qt-project.org");
    xlsx.write("A6", QDate(2013, 12, 27));
    xlsx.write("A7", QTime(6, 30));

    xlsx.saveAs("Book1.xlsx");
    }

    QXlsx::Document xlsx("Book1.xlsx");

    qDebug()<<xlsx.read("A1");
    qDebug()<<xlsx.read("A2");
    qDebug()<<xlsx.read("A3");
    qDebug()<<xlsx.read("A4");
    qDebug()<<xlsx.read("A5");
    qDebug()<<xlsx.read("A6");
    qDebug()<<xlsx.read("A7");

    for (int row=1; row<10; ++row) {
        if (QXlsx::Cell *cell=xlsx.cellAt(row, 1))
            qDebug()<<cell->value();
    }

    return 0;
}


# 全進階操作

 https://www.cnblogs.com/whwywzhj/p/9176662.html

1. 選擇指定工作表(沒有就創建)

    if(!xlsx.selectSheet("ziv")){/*在當前打開的xlsx文件中,找一個名字為ziv的sheet*/
        xlsx.addSheet("ziv");//找不到的話就添加一個名為ziv的sheet
    }
2. 指定格式
    QXlsx::Format format1;/*設置該單元的樣式*/
    format1.setFontColor(QColor(Qt::red));/*文字為紅色*/
    format1.setPatternBackgroundColor(QColor(152,251,152));/*北京顏色*/
    format1.setFontSize(15);/*設置字體大小*/
    format1.setHorizontalAlignment(QXlsx::Format::AlignHCenter);/*橫向居中*/
    format1.setBorderStyle(QXlsx::Format::BorderDashDotDot);/*邊框樣式*/
    xlsx.write("A1", "Hello Qt!", format1);/*寫入文字,應該剛才設置的樣式*/
    xlsx.write(2, 1, 12345, format1);/*寫入文字,應該剛才設置的樣式*/
	
3. 插入圖表
    if(!xlsx.selectSheet("ziv")){/*在當前打開的xlsx文件中,找一個名字為ziv的sheet*/
        xlsx.addSheet("ziv");//找不到的話就添加一個名為ziv的sheet
    }
    for (int i=10; i<20; ++i) {/*寫入一串數字*/
        xlsx.write(i, 1, i*i*i);   //A10:A19
        xlsx.write(i, 2, i*i); //B10:B19
        xlsx.write(i, 3, i*i-1); //C10:C19
    }
    QXlsx::Chart *pieChart = xlsx.insertChart(3, 5, QSize(300, 300));/*在3行5列的位置插入一個圖標*/
    pieChart->setChartType(QXlsx::Chart::CT_Pie);/*插入一個餅形圖*/
    pieChart->addSeries(QXlsx::CellRange("A10:A19"));/*餅形圖添加數據*/
    pieChart->addSeries(QXlsx::CellRange("B10:B19"));
    pieChart->addSeries(QXlsx::CellRange("C10:C19"));

    QXlsx::Chart *barChart = xlsx.insertChart(3, 13, QSize(300, 300));/*在3行13列的位置插入一個圖標*/
    barChart->setChartType(QXlsx::Chart::CT_Bar);/*條形圖*/
    barChart->addSeries(QXlsx::CellRange("A10:C19"));/*給條形圖加入數據*/

    xlsx.saveAs("book1.xlsx");/*保存*/
    QXlsx::Document xlsx2("Book1.xlsx");/*復制book1到book2*/
    xlsx2.saveAs("Book2.xlsx");
	

image

示例2

void testfunc()
{
    QXlsx::Document xlsx;

    QXlsx::Format formatTitle;
    formatTitle.setFontBold(true); /// 粗體
    formatTitle.setFontColor(QColor(Qt::black));
    formatTitle.setFontSize(20);  /// 字體大小 20
    formatTitle.setBorderStyle(QXlsx::Format::BorderThin); /// 邊框樣式
    formatTitle.setPatternBackgroundColor(Qt::lightGray);      ///  單元格背景色
    formatTitle.setFillPattern(QXlsx::Format::PatternSolid); /// 填充樣式
    formatTitle.setHorizontalAlignment(QXlsx::Format::AlignHCenter); /// 文本水平居中
    xlsx.mergeCells(QXlsx::CellRange(1,1, 1, 15), formatTitle); /// 合並單元格 第一行1-5格合並成一格
    xlsx.write(1, 1, "table title ...  測試"); /// 給合並后的單元格寫數據, 注意參數 (1,1,"title")

	 // 寫表頭 表頭在第二行   1-15
    QXlsx::Format format1;
    format1.setFontBold(false);
    format1.setFontSize(14);
    format1.setFontColor(QColor(Qt::black));
    format1.setBorderStyle(QXlsx::Format::BorderThin);
    format1.setPatternBackgroundColor(Qt::darkGray);      ///  單元格背景色


    xlsx.write(2, 1, "title 1", format1);
    xlsx.write(2, 2, "title 2", format1);
    xlsx.write(2, 3, "title 3", format1);
    xlsx.write(2, 4, "title 4", format1);
    xlsx.write(2, 5, "title 5", format1);
    xlsx.write(2, 6, "title 6", format1);
    xlsx.write(2, 7, "title 7", format1);
    xlsx.write(2, 8, "title 8", format1);
    xlsx.write(2, 9,  "表頭 9", format1);
    xlsx.write(2, 10, "表頭 10", format1);
    xlsx.write(2, 11, "表頭 11", format1);
    xlsx.write(2, 12, "表頭 12", format1);
    xlsx.write(2, 13, "表頭 13", format1);
    xlsx.write(2, 14, "表頭 14", format1);
    xlsx.write(2, 15, "表頭 15", format1);

    QXlsx::Format format2;
    format2.setFontBold(false);
    format2.setFontColor(QColor(Qt::black));
    format2.setBorderStyle(QXlsx::Format::BorderThin);
    /// 寫表格
    /// 可以先按行寫, 也可以按列寫
    /// 這里按列寫數據
	for (int col = 1; col <= 15; col++) //  1-15 列
   {
      for (int row = 3; row <= 10; row++) // 3-10行
      {
        xlsx.write(row, col, row + col, format2);
      }
    }

    xlsx.saveAs("test8.xlsx");
}

int main()
{
  std::thread(testfunc).join();
  return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM