Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office

3.2 工程目录下添加源代码

来到工程目录下:

打开网上下载的源码路径:

3.3 在工程中引入xlsx源代码

3.4 修改main.cpp内容,测试

1 #include
 2 #include "xlsxdocument.h"
 3
 4 int main()
 5 {
 6     //![0]
 7     QXlsx::Document xlsx;
 8     //![0]
 9
10     //![1]
11     xlsx.write("A1", "Hello Qt!");
12     xlsx.write("A2", 12345);
13     xlsx.write("A3", "=44+33");
14     xlsx.write("A4", true);
15     xlsx.write("A5", "http://qt-project.org");
16     xlsx.write("A6", QDate(2013, 12, 27));
17     xlsx.write("A7", QTime(6, 30));
18     //![1]
19
20     //![2]
21     xlsx.save();
22     //![2]
23
24     return 0;
25 }

3.5 查看效果

内容一致:

4. 官方examples例子

4.1 calendar Qt操作Excel生成日历

1 #include
  2 #include "xlsxdocument.h"
  3 #include "xlsxformat.h"
  4 #include "xlsxcellrange.h"
  5 #include "xlsxworksheet.h"
  6
  7 QTXLSX_USE_NAMESPACE
  8
  9 int main(int argc, char **argv)
 10 {
 11     QCoreApplication app(argc, argv);
 12
 13     // Select a proper locale
 14     // QLocale::setDefault(QLocale(QLocale::English));
 15
 16     Document xlsx;
 17     QDate today(QDate::currentDate());
 18     for (int month = 1; month 12; ++month) {
 19         xlsx.addSheet(QLocale().monthName(month));
 20         xlsx.currentWorksheet()->setGridLinesVisible(false);
 21
 22         // the header row
 23         Format headerStyle;
 24         headerStyle.setFontSize(48);
 25         headerStyle.setFontColor(Qt::darkBlue);
 26         headerStyle.setHorizontalAlignment(Format::AlignHCenter);
 27         headerStyle.setVerticalAlignment(Format::AlignVCenter);
 28         xlsx.setRowHeight(1, 80);
 29         xlsx.write("A1", QString("%1 %2").arg(QLocale().monthName(month)).arg(today.year()));
 30         xlsx.mergeCells("A1:N1", headerStyle);
 31
 32         // header with month titles
 33         for (int day = 1; day 7; ++day) {
 34             Format monthStyle;
 35             monthStyle.setFontSize(12);
 36             monthStyle.setFontColor(Qt::white);
 37             monthStyle.setFontBold(true);
 38             monthStyle.setHorizontalAlignment(Format::AlignHCenter);
 39             monthStyle.setVerticalAlignment(Format::AlignVCenter);
 40             monthStyle.setFillPattern(Format::PatternSolid);
 41             monthStyle.setPatternBackgroundColor(Qt::darkBlue);
 42
 43             xlsx.setColumnWidth(day * 2 - 1, day * 2 - 1, 5);
 44             xlsx.setColumnWidth(day * 2, day * 2, 13);
 45             xlsx.write(2, day * 2 - 1, QLocale().dayName(day));
 46             xlsx.mergeCells(CellRange(2, day * 2 - 1, 2, day * 2), monthStyle);
 47         }
 48
 49         QColor borderColor = QColor(Qt::gray);
 50
 51         Format weekendLeftStyle;
 52         weekendLeftStyle.setFontSize(14);
 53         weekendLeftStyle.setFontBold(true);
 54         weekendLeftStyle.setHorizontalAlignment(Format::AlignLeft);
 55         weekendLeftStyle.setVerticalAlignment(Format::AlignTop);
 56         weekendLeftStyle.setPatternBackgroundColor(QColor("#93CCEA"));
 57         weekendLeftStyle.setLeftBorderStyle(Format::BorderThin);
 58         weekendLeftStyle.setLeftBorderColor(borderColor);
 59         weekendLeftStyle.setBottomBorderStyle(Format::BorderThin);
 60         weekendLeftStyle.setBottomBorderColor(borderColor);
 61
 62         Format weekendRightStyle;
 63         weekendRightStyle.setHorizontalAlignment(Format::AlignHCenter);
 64         weekendRightStyle.setVerticalAlignment(Format::AlignTop);
 65         weekendRightStyle.setPatternBackgroundColor(QColor("#93CCEA"));
 66         weekendRightStyle.setRightBorderStyle(Format::BorderThin);
 67         weekendRightStyle.setRightBorderColor(borderColor);
 68         weekendRightStyle.setBottomBorderStyle(Format::BorderThin);
 69         weekendRightStyle.setBottomBorderColor(borderColor);
 70
 71         Format workdayLeftStyle;
 72         workdayLeftStyle.setHorizontalAlignment(Format::AlignLeft);
 73         workdayLeftStyle.setVerticalAlignment(Format::AlignTop);
 74         workdayLeftStyle.setPatternBackgroundColor(Qt::white);
 75         workdayLeftStyle.setLeftBorderStyle(Format::BorderThin);
 76         workdayLeftStyle.setLeftBorderColor(borderColor);
 77         workdayLeftStyle.setBottomBorderStyle(Format::BorderThin);
 78         workdayLeftStyle.setBottomBorderColor(borderColor);
 79
 80         Format workdayRightStyle;
 81         workdayRightStyle.setHorizontalAlignment(Format::AlignHCenter);
 82         workdayRightStyle.setVerticalAlignment(Format::AlignTop);
 83         workdayRightStyle.setPatternBackgroundColor(Qt::white);
 84         workdayRightStyle.setRightBorderStyle(Format::BorderThin);
 85         workdayRightStyle.setRightBorderColor(borderColor);
 86         workdayRightStyle.setBottomBorderStyle(Format::BorderThin);
 87         workdayRightStyle.setBottomBorderColor(borderColor);
 88
 89         Format greyLeftStyle;
 90         greyLeftStyle.setPatternBackgroundColor(Qt::lightGray);
 91         greyLeftStyle.setLeftBorderStyle(Format::BorderThin);
 92         greyLeftStyle.setLeftBorderColor(borderColor);
 93         greyLeftStyle.setBottomBorderStyle(Format::BorderThin);
 94         greyLeftStyle.setBottomBorderColor(borderColor);
 95
 96         Format greyRightStyle;
 97         greyRightStyle.setPatternBackgroundColor(Qt::lightGray);
 98         greyRightStyle.setRightBorderStyle(Format::BorderThin);
 99         greyRightStyle.setRightBorderColor(borderColor);
100         greyRightStyle.setBottomBorderStyle(Format::BorderThin);
101         greyRightStyle.setBottomBorderColor(borderColor);
102
103         int rownum = 3;
104         for (int day = 1; day 31; ++day) {
105             QDate date(today.year(), month, day);
106             if (!date.isValid())
107                 break;
108             xlsx.setRowHeight(rownum, 100);
109             int dow = date.dayOfWeek();
110             int colnum = dow * 2 - 1;
111
112             if (dow 5) {
113                 xlsx.write(rownum, colnum, day, workdayLeftStyle);
114                 xlsx.write(rownum, colnum + 1, QVariant(), workdayRightStyle);
115             } else {
116                 xlsx.write(rownum, colnum, day, weekendLeftStyle);
117                 xlsx.write(rownum, colnum + 1, QVariant(), weekendRightStyle);
118             }
119
120             if (day == 1 && dow != 1) { // First day
121                 for (int i = 1; i < dow; ++i) {
122                     xlsx.write(rownum, i * 2 - 1, QVariant(), greyLeftStyle);
123                     xlsx.write(rownum, i * 2, QVariant(), greyRightStyle);
124                 }
125             } else if (day == date.daysInMonth() && dow != 7) { // Last day
126                 for (int i = dow + 1; i 7; ++i) {
127                     xlsx.write(rownum, i * 2 - 1, QVariant(), greyLeftStyle);
128                     xlsx.write(rownum, i * 2, QVariant(), greyRightStyle);
129                 }
130             }
131
132             if (dow == 7)
133                 rownum++;
134         }
135     }
136
137     xlsx.saveAs("Book1.xlsx");
138
139     // Make sure that read/write works well.

140     Document xlsx2("Book1.xlsx");
141     xlsx2.saveAs("Book2.xlsx");
142
143     return 0;
144 }

4.2 chart Qt操作Excel生成图表

 1 #include 
 2 #include "xlsxdocument.h"
 3 #include "xlsxcellrange.h"
 4 #include "xlsxchart.h"
 5
 6 using namespace QXlsx;
 7
 8 int main()
 9 {
10     //![0]
11     Document xlsx;
12     for (int i = 1; i < 10; ++i) {
13         xlsx.write(i, 1, i * i * i); // A1:A9
14         xlsx.write(i, 2, i * i); // B1:B9
15         xlsx.write(i, 3, i * i - 1); // C1:C9
16     }
17     //![0]
18
19     //![1]
20     Chart *pieChart = xlsx.insertChart(3, 3, QSize(300, 300));
21     pieChart->setChartType(Chart::CT_Pie);
22     pieChart->addSeries(CellRange("A1:A9"));
23     pieChart->addSeries(CellRange("B1:B9"));
24     pieChart->addSeries(CellRange("C1:C9"));
25
26     Chart *pie3DChart = xlsx.insertChart(3, 9, QSize(300, 300));
27     pie3DChart->setChartType(Chart::CT_Pie3D);
28     pie3DChart->addSeries(CellRange("A1:C9"));
29
30     Chart *barChart = xlsx.insertChart(23, 3, QSize(300, 300));
31     barChart->setChartType(Chart::CT_Bar);
32     barChart->addSeries(CellRange("A1:C9"));
33
34     Chart *bar3DChart = xlsx.insertChart(23, 9, QSize(300, 300));
35     bar3DChart->setChartType(Chart::CT_Bar3D);
36     bar3DChart->addSeries(CellRange("A1:C9"));
37
38     Chart *lineChart = xlsx.insertChart(43, 3, QSize(300, 300));
39     lineChart->setChartType(Chart::CT_Line);
40     lineChart->addSeries(CellRange("A1:C9"));
41
42     Chart *line3DChart = xlsx.insertChart(43, 9, QSize(300, 300));
43     line3DChart->setChartType(Chart::CT_Line3D);
44     line3DChart->addSeries(CellRange("A1:C9"));
45
46     Chart *areaChart = xlsx.insertChart(63, 3, QSize(300, 300));
47     areaChart->setChartType(Chart::CT_Area);
48     areaChart->addSeries(CellRange("A1:C9"));
49
50     Chart *area3DChart = xlsx.insertChart(63, 9, QSize(300, 300));
51     area3DChart->setChartType(Chart::CT_Area3D);
52     area3DChart->addSeries(CellRange("A1:C9"));
53
54     Chart *scatterChart = xlsx.insertChart(83, 3, QSize(300, 300));
55     scatterChart->setChartType(Chart::CT_Scatter);
56     // Will generate three lines.
57     scatterChart->addSeries(CellRange("A1:A9"));
58     scatterChart->addSeries(CellRange("B1:B9"));
59     scatterChart->addSeries(CellRange("C1:C9"));
60
61     Chart *scatterChart_2 = xlsx.insertChart(83, 9, QSize(300, 300));
62     scatterChart_2->setChartType(Chart::CT_Scatter);
63     // Will generate two lines.
64     scatterChart_2->addSeries(CellRange("A1:C9"));
65
66     Chart *doughnutChart = xlsx.insertChart(103, 3, QSize(300, 300));
67     doughnutChart->setChartType(Chart::CT_Doughnut);
68     doughnutChart->addSeries(CellRange("A1:C9"));
69     //![1]
70
71     //![2]
72     xlsx.saveAs("Book1.xlsx");
73     //![2]
74
75     Document xlsx2("Book1.xlsx");
76     xlsx2.saveAs("Book2.xlsx");
77     return 0;
78 }

4.3 chartsheet Qt操作Excel生成图表

 1 #include 
 2 #include "xlsxdocument.h"
 3 #include "xlsxchartsheet.h"
 4 #include "xlsxcellrange.h"
 5 #include "xlsxchart.h"
 6
 7 using namespace QXlsx;
 8
 9 int main()
10 {
11     //![0]
12     Document xlsx;
13     for (int i = 1; i < 10; ++i)
14         xlsx.write(i, 1, i * i);
15     //![0]
16
17     //![1]
18     xlsx.addSheet("Chart1", AbstractSheet::ST_ChartSheet);
19     Chartsheet *sheet = static_cast(xlsx.currentSheet());
20     Chart *barChart = sheet->chart();
21     barChart->setChartType(Chart::CT_Bar);
22     barChart->addSeries(CellRange("A1:A9"), xlsx.sheet("Sheet1"));
23     //![1]
24
25     //![2]
26     xlsx.saveAs("Book1.xlsx");
27     //![2]
28
29     Document xlsx2("Book1.xlsx");
30     xlsx2.saveAs("Book2.xlsx");
31     return 0;
32 }

4.4 conditionalformatting Qt操作Excel 条件格式化

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxconditionalformatting.h"
 4
 5 using namespace QXlsx;
 6
 7 int main()
 8 {
 9     //![0]
10     Document xlsx;
11     Format hFmt;
12     hFmt.setFontBold(true);
13     xlsx.write("B1", "(-inf,40)", hFmt);
14     xlsx.write("C1", "[30,70]", hFmt);
15     xlsx.write("D1", "startsWith 2", hFmt);
16     xlsx.write("E1", "dataBar", hFmt);
17     xlsx.write("F1", "colorScale", hFmt);
18
19     for (int row = 3; row < 22; ++row) {
20         for (int col = 2; col < 22; ++col)
21             xlsx.write(row, col, qrand() % 100);
22     }
23     //![0]
24
25     //![cf1]
26     ConditionalFormatting cf1;
27     Format fmt1;
28     fmt1.setFontColor(Qt::green);
29     fmt1.setBorderStyle(Format::BorderDashed);
30     cf1.addHighlightCellsRule(ConditionalFormatting::Highlight_LessThan, "40", fmt1);
31     cf1.addRange("B3:B21");
32     xlsx.addConditionalFormatting(cf1);
33     //![cf1]
34
35     //![cf2]
36     ConditionalFormatting cf2;
37     Format fmt2;
38     fmt2.setBorderStyle(Format::BorderDotted);
39     fmt2.setBorderColor(Qt::blue);
40     cf2.addHighlightCellsRule(ConditionalFormatting::Highlight_Between, "30", "70", fmt2);
41     cf2.addRange("C3:C21");
42     xlsx.addConditionalFormatting(cf2);
43     //![cf2]
44
45     //![cf3]
46     ConditionalFormatting cf3;
47     Format fmt3;
48     fmt3.setFontStrikeOut(true);
49     fmt3.setFontBold(true);
50     cf3.addHighlightCellsRule(ConditionalFormatting::Highlight_BeginsWith, "2", fmt3);
51     cf3.addRange("D3:D21");
52     xlsx.addConditionalFormatting(cf3);
53     //![cf3]
54
55     //![cf4]
56     ConditionalFormatting cf4;
57     cf4.addDataBarRule(Qt::blue);
58     cf4.addRange("E3:E21");
59     xlsx.addConditionalFormatting(cf4);
60     //![cf4]
61
62     //![cf5]
63     ConditionalFormatting cf5;
64     cf5.add2ColorScaleRule(Qt::blue, Qt::red);
65     cf5.addRange("F3:F21");
66     xlsx.addConditionalFormatting(cf5);
67     //![cf5]
68
69     //![2]
70     xlsx.saveAs("Book1.xlsx");
71     //![2]
72
73     Document xlsx2("Book1.xlsx");
74     xlsx2.saveAs("Book2.xlsx");
75     return 0;
76 }

4.5 datavalidation Qt操作Excel 数据有效性

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxdatavalidation.h"
 4
 5 QTXLSX_USE_NAMESPACE
 6
 7 int main()
 8 {
 9     Document xlsx;
10     xlsx.write("A1", "A2 and A3:E5 only accept the number between 33 and 99");
11
12     //![1]
13     DataValidation validation(DataValidation::Whole, DataValidation::Between, "33", "99");
14     validation.addRange("A2");
15     validation.addRange("A3:E5");
16     validation.setPromptMessage("Please Input Integer between 33 and 99");
17     xlsx.addDataValidation(validation);
18     //![1]
19
20     xlsx.saveAs("Book1.xlsx");
21     return 0;
22 }

4.6 definename Qt操作Excel 定义名字

1 #include
 2 #include "xlsxdocument.h"
 3
 4 QTXLSX_USE_NAMESPACE
 5
 6 int main()
 7 {
 8     //![0]
 9     Document xlsx;
10     for (int i = 1; i 10; ++i) {
11         xlsx.write(i, 1, i);
12         xlsx.write(i, 2, i * i);
13         xlsx.write(i, 3, i * i * i);
14     }
15     //![0]
16     //![1]
17     xlsx.defineName("MyCol_1", "=Sheet1!$A$1:$A$10");
18     xlsx.defineName("MyCol_2", "=Sheet1!$B$1:$B$10", "This is comments");
19     xlsx.defineName("MyCol_3", "=Sheet1!$C$1:$C$10", "", "Sheet1");
20     xlsx.defineName("Factor", "=0.5");
21     //![1]
22     //![2]
23     xlsx.write(11, 1, "=SUM(MyCol_1)");
24     xlsx.write(11, 2, "=SUM(MyCol_2)");
25     xlsx.write(11, 3, "=SUM(MyCol_3)");
26     xlsx.write(12, 1, "=SUM(MyCol_1)*Factor");
27     xlsx.write(12, 2, "=SUM(MyCol_2)*Factor");
28     xlsx.write(12, 3, "=SUM(MyCol_3)*Factor");
29     //![2]
30
31     xlsx.saveAs("Book1.xlsx");
32     return 0;
33 }

4.7 demo Qt操作Excel 示例

1 #include
  2 #include "xlsxdocument.h"
  3 #include "xlsxformat.h"
  4 #include "xlsxcellrange.h"
  5 #include "xlsxworksheet.h"
  6
  7 QTXLSX_USE_NAMESPACE
  8
  9 void writeHorizontalAlignCell(Document &xlsx, const QString &cell, const QString &text,
 10                               Format::HorizontalAlignment align)
 11 {
 12     Format format;
 13     format.setHorizontalAlignment(align);
 14     format.setBorderStyle(Format::BorderThin);
 15     xlsx.write(cell, text, format);
 16 }
 17
 18 void writeVerticalAlignCell(Document &xlsx, const QString &range, const QString &text,
 19                             Format::VerticalAlignment align)
 20 {
 21     Format format;
 22     format.setVerticalAlignment(align);
 23     format.setBorderStyle(Format::BorderThin);
 24     CellRange r(range);
 25     xlsx.write(r.firstRow(), r.firstColumn(), text);
 26     xlsx.mergeCells(r, format);
 27 }
 28
 29 void writeBorderStyleCell(Document &xlsx, const QString &cell, const QString &text,
 30                           Format::BorderStyle bs)
 31 {
 32     Format format;
 33     format.setBorderStyle(bs);
 34     xlsx.write(cell, text, format);
 35 }
 36
 37 void writeSolidFillCell(Document &xlsx, const QString &cell, const QColor &color)
 38 {
 39     Format format;
 40     format.setPatternBackgroundColor(color);
 41     xlsx.write(cell, QVariant(), format);
 42 }
 43
 44 void writePatternFillCell(Document &xlsx, const QString &cell, Format::FillPattern pattern,
 45                           const QColor &color)
 46 {
 47     Format format;
 48     format.setPatternForegroundColor(color);
 49     format.setFillPattern(pattern);
 50     xlsx.write(cell, QVariant(), format);
 51 }
 52
 53 void writeBorderAndFontColorCell(Document &xlsx, const QString &cell, const QString &text,
 54                                  const QColor &color)
 55 {
 56     Format format;
 57     format.setBorderStyle(Format::BorderThin);
 58     format.setBorderColor(color);
 59     format.setFontColor(color);
 60     xlsx.write(cell, text, format);
 61 }
 62
 63 void writeFontNameCell(Document &xlsx, const QString &cell, const QString &text)
 64 {
 65     Format format;
 66     format.setFontName(text);
 67     format.setFontSize(16);
 68     xlsx.write(cell, text, format);
 69 }
 70
 71 void writeFontSizeCell(Document &xlsx, const QString &cell, int size)
 72 {
 73     Format format;
 74     format.setFontSize(size);
 75     xlsx.write(cell, "Qt Xlsx", format);
 76 }
 77
 78 void writeInternalNumFormatsCell(Document &xlsx, int row, double value, int numFmt)
 79 {
 80     Format format;
 81     format.setNumberFormatIndex(numFmt);
 82     xlsx.write(row, 1, value);
 83     xlsx.write(row, 2, QString("Builtin NumFmt %1").arg(numFmt));
 84     xlsx.write(row, 3, value, format);
 85 }
 86
 87 void writeCustomNumFormatsCell(Document &xlsx, int row, double value, const QString &numFmt)
 88 {
 89     Format format;
 90     format.setNumberFormat(numFmt);
 91     xlsx.write(row, 1, value);
 92     xlsx.write(row, 2, numFmt);
 93     xlsx.write(row, 3, value, format);
 94 }
 95
 96 int main()
 97 {
 98     Document xlsx;
 99
100     //---------------------------------------------------------------
101     // Create the first sheet (Otherwise, default "Sheet1" will be created)
102     xlsx.addSheet("Aligns & Borders");
103     xlsx.setColumnWidth(2, 20); // Column B
104     xlsx.setColumnWidth(8, 12); // Column H
105     xlsx.currentWorksheet()->setGridLinesVisible(false);
106
107     // Alignment
108     writeHorizontalAlignCell(xlsx, "B3", "AlignLeft", Format::AlignLeft);
109     writeHorizontalAlignCell(xlsx, "B5", "AlignHCenter", Format::AlignHCenter);
110     writeHorizontalAlignCell(xlsx, "B7", "AlignRight", Format::AlignRight);
111     writeVerticalAlignCell(xlsx, "D3:D7", "AlignTop", Format::AlignTop);
112     writeVerticalAlignCell(xlsx, "F3:F7", "AlignVCenter", Format::AlignVCenter);
113     writeVerticalAlignCell(xlsx, "H3:H7", "AlignBottom", Format::AlignBottom);
114
115     // Border
116     writeBorderStyleCell(xlsx, "B13", "BorderMedium", Format::BorderMedium);
117     writeBorderStyleCell(xlsx, "B15", "BorderDashed", Format::BorderDashed);
118     writeBorderStyleCell(xlsx, "B17", "BorderDotted", Format::BorderDotted);
119     writeBorderStyleCell(xlsx, "B19", "BorderThick", Format::BorderThick);
120     writeBorderStyleCell(xlsx, "B21", "BorderDouble", Format::BorderDouble);
121     writeBorderStyleCell(xlsx, "B23", "BorderDashDot", Format::BorderDashDot);
122
123     // Fill
124     writeSolidFillCell(xlsx, "D13", Qt::red);
125     writeSolidFillCell(xlsx, "D15", Qt::blue);
126     writeSolidFillCell(xlsx, "D17", Qt::yellow);
127     writeSolidFillCell(xlsx, "D19", Qt::magenta);
128     writeSolidFillCell(xlsx, "D21", Qt::green);
129     writeSolidFillCell(xlsx, "D23", Qt::gray);
130     writePatternFillCell(xlsx, "F13", Format::PatternMediumGray, Qt::red);
131     writePatternFillCell(xlsx, "F15", Format::PatternDarkHorizontal, Qt::blue);
132     writePatternFillCell(xlsx, "F17", Format::PatternDarkVertical, Qt::yellow);
133     writePatternFillCell(xlsx, "F19", Format::PatternDarkDown, Qt::magenta);
134     writePatternFillCell(xlsx, "F21", Format::PatternLightVertical, Qt::green);
135     writePatternFillCell(xlsx, "F23", Format::PatternLightTrellis, Qt::gray);
136
137     writeBorderAndFontColorCell(xlsx, "H13", "Qt::red", Qt::red);
138     writeBorderAndFontColorCell(xlsx, "H15", "Qt::blue", Qt::blue);
139     writeBorderAndFontColorCell(xlsx, "H17", "Qt::yellow", Qt::yellow);
140     writeBorderAndFontColorCell(xlsx, "H19", "Qt::magenta", Qt::magenta);
141     writeBorderAndFontColorCell(xlsx, "H21", "Qt::green", Qt::green);
142     writeBorderAndFontColorCell(xlsx, "H23", "Qt::gray", Qt::gray);
143
144     //---------------------------------------------------------------
145     // Create the second sheet.

146     xlsx.addSheet("Fonts");
147
148     xlsx.write("B3", "Normal");
149     Format font_bold;
150     font_bold.setFontBold(true);
151     xlsx.write("B4", "Bold", font_bold);
152     Format font_italic;
153     font_italic.setFontItalic(true);
154     xlsx.write("B5", "Italic", font_italic);
155     Format font_underline;
156     font_underline.setFontUnderline(Format::FontUnderlineSingle);
157     xlsx.write("B6", "Underline", font_underline);
158     Format font_strikeout;
159     font_strikeout.setFontStrikeOut(true);
160     xlsx.write("B7", "StrikeOut", font_strikeout);
161
162     writeFontNameCell(xlsx, "D3", "Arial");
163     writeFontNameCell(xlsx, "D4", "Arial Black");
164     writeFontNameCell(xlsx, "D5", "Comic Sans MS");
165     writeFontNameCell(xlsx, "D6", "Courier New");
166     writeFontNameCell(xlsx, "D7", "Impact");
167     writeFontNameCell(xlsx, "D8", "Times New Roman");
168     writeFontNameCell(xlsx, "D9", "Verdana");
169
170     writeFontSizeCell(xlsx, "G3", 10);
171     writeFontSizeCell(xlsx, "G4", 12);
172     writeFontSizeCell(xlsx, "G5", 14);
173     writeFontSizeCell(xlsx, "G6", 16);
174     writeFontSizeCell(xlsx, "G7", 18);
175     writeFontSizeCell(xlsx, "G8", 20);
176     writeFontSizeCell(xlsx, "G9", 25);
177
178     Format font_vertical;
179     font_vertical.setRotation(255);
180     font_vertical.setFontSize(16);
181     xlsx.write("J3", "vertical", font_vertical);
182     xlsx.mergeCells("J3:J9");
183
184     //---------------------------------------------------------------
185     // Create the third sheet.

186     xlsx.addSheet("Formulas");
187     xlsx.setColumnWidth(1, 2, 40);
188     Format rAlign;
189     rAlign.setHorizontalAlignment(Format::AlignRight);
190     Format lAlign;
191     lAlign.setHorizontalAlignment(Format::AlignLeft);
192     xlsx.write("B3", 40, lAlign);
193     xlsx.write("B4", 30, lAlign);
194     xlsx.write("B5", 50, lAlign);
195     xlsx.write("A7", "SUM(B3:B5)=", rAlign);
196     xlsx.write("B7", "=SUM(B3:B5)", lAlign);
197     xlsx.write("A8", "AVERAGE(B3:B5)=", rAlign);
198     xlsx.write("B8", "=AVERAGE(B3:B5)", lAlign);
199     xlsx.write("A9", "MAX(B3:B5)=", rAlign);
200     xlsx.write("B9", "=MAX(B3:B5)", lAlign);
201     xlsx.write("A10", "MIN(B3:B5)=", rAlign);
202     xlsx.write("B10", "=MIN(B3:B5)", lAlign);
203     xlsx.write("A11", "COUNT(B3:B5)=", rAlign);
204     xlsx.write("B11", "=COUNT(B3:B5)", lAlign);
205
206     xlsx.write("A13", "IF(B7>100,\"large\",\"small\")=", rAlign);
207     xlsx.write("B13", "=IF(B7>100,\"large\",\"small\")", lAlign);
208
209     xlsx.write("A15", "SQRT(25)=", rAlign);
210     xlsx.write("B15", "=SQRT(25)", lAlign);
211     xlsx.write("A16", "RAND()=", rAlign);
212     xlsx.write("B16", "=RAND()", lAlign);
213     xlsx.write("A17", "2*PI()=", rAlign);
214     xlsx.write("B17", "=2*PI()", lAlign);
215
216     xlsx.write("A19", "UPPER(\"qtxlsx\")=", rAlign);
217     xlsx.write("B19", "=UPPER(\"qtxlsx\")", lAlign);
218     xlsx.write("A20", "LEFT(\"ubuntu\",3)=", rAlign);
219     xlsx.write("B20", "=LEFT(\"ubuntu\",3)", lAlign);
220     xlsx.write("A21", "LEN(\"Hello Qt!\")=", rAlign);
221     xlsx.write("B21", "=LEN(\"Hello Qt!\")", lAlign);
222
223     Format dateFormat;
224     dateFormat.setHorizontalAlignment(Format::AlignLeft);
225     dateFormat.setNumberFormat("yyyy-mm-dd");
226     xlsx.write("A23", "DATE(2013,8,13)=", rAlign);
227     xlsx.write("B23", "=DATE(2013,8,13)", dateFormat);
228     xlsx.write("A24", "DAY(B23)=", rAlign);
229     xlsx.write("B24", "=DAY(B23)", lAlign);
230     xlsx.write("A25", "MONTH(B23)=", rAlign);
231     xlsx.write("B25", "=MONTH(B23)", lAlign);
232     xlsx.write("A26", "YEAR(B23)=", rAlign);
233     xlsx.write("B26", "=YEAR(B23)", lAlign);
234     xlsx.write("A27", "DAYS360(B23,TODAY())=", rAlign);
235     xlsx.write("B27", "=DAYS360(B23,TODAY())", lAlign);
236
237     xlsx.write("A29", "B3+100*(2-COS(0)))=", rAlign);
238     xlsx.write("B29", "=B3+100*(2-COS(0))", lAlign);
239     xlsx.write("A30", "ISNUMBER(B29)=", rAlign);
240     xlsx.write("B30", "=ISNUMBER(B29)", lAlign);
241     xlsx.write("A31", "AND(1,0)=", rAlign);
242     xlsx.write("B31", "=AND(1,0)", lAlign);
243
244     xlsx.write("A33", "HYPERLINK(\"http://qt-project.org\")=", rAlign);
245     xlsx.write("B33", "=HYPERLINK(\"http://qt-project.org\")", lAlign);
246
247     //---------------------------------------------------------------
248     // Create the fourth sheet.

249     xlsx.addSheet("NumFormats");
250     xlsx.setColumnWidth(2, 40);
251     writeInternalNumFormatsCell(xlsx, 4, 2.5681, 2);
252     writeInternalNumFormatsCell(xlsx, 5, 2500000, 3);
253     writeInternalNumFormatsCell(xlsx, 6, -500, 5);
254     writeInternalNumFormatsCell(xlsx, 7, -0.25, 9);
255     writeInternalNumFormatsCell(xlsx, 8, 890, 11);
256     writeInternalNumFormatsCell(xlsx, 9, 0.75, 12);
257     writeInternalNumFormatsCell(xlsx, 10, 41499, 14);
258     writeInternalNumFormatsCell(xlsx, 11, 41499, 17);
259
260     writeCustomNumFormatsCell(xlsx, 13, 20.5627, "#.###");
261     writeCustomNumFormatsCell(xlsx, 14, 4.8, "#.00");
262     writeCustomNumFormatsCell(xlsx, 15, 1.23, "0.00 \"RMB\"");
263     writeCustomNumFormatsCell(xlsx, 16, 60, "[Red][100]");
264
265     //---------------------------------------------------------------
266     // Create the fifth sheet.

267     xlsx.addSheet("Merging");
268     Format centerAlign;
269     centerAlign.setHorizontalAlignment(Format::AlignHCenter);
270     centerAlign.setVerticalAlignment(Format::AlignVCenter);
271     xlsx.write("B4", "Hello Qt!");
272     xlsx.mergeCells("B4:F6", centerAlign);
273     xlsx.write("B8", 1);
274     xlsx.mergeCells("B8:C21", centerAlign);
275     xlsx.write("E8", 2);
276     xlsx.mergeCells("E8:F21", centerAlign);
277
278     //---------------------------------------------------------------
279     // Create the fifth sheet.

280     xlsx.addSheet("Grouping");
281     qsrand(QDateTime::currentMSecsSinceEpoch());
282     for (int row = 2; row < 31; ++row) {
283         for (int col = 1; col 10; ++col)
284             xlsx.write(row, col, qrand() % 100);
285     }
286     xlsx.groupRows(4, 7);
287     xlsx.groupRows(11, 26, false);
288     xlsx.groupRows(15, 17, false);
289     xlsx.groupRows(20, 22, false);
290     xlsx.setColumnWidth(1, 10, 10.0);
291     xlsx.groupColumns(1, 2);
292     xlsx.groupColumns(5, 8, false);
293
294     xlsx.saveAs("Book1.xlsx");
295
296     // Make sure that read/write works well.

297     Document xlsx2("Book1.xlsx");
298     xlsx2.saveAs("Book2.xlsx");
299
300     return 0;
301 }

4.8 documentproperty Qt操作Excel 文档属性

1 #include
 2 #include "xlsxdocument.h"
 3
 4 int main()
 5 {
 6     QXlsx::Document xlsx;
 7     xlsx.write("A1", "View the properties through:");
 8     xlsx.write("A2", "Office Button -> Prepare -> Properties option in Excel");
 9
10     xlsx.setDocumentProperty("title", "This is an example spreadsheet");
11     xlsx.setDocumentProperty("subject", "With document properties");
12     xlsx.setDocumentProperty("creator", "Debao Zhang");
13     xlsx.setDocumentProperty("company", "HMICN");
14     xlsx.setDocumentProperty("category", "Example spreadsheets");
15     xlsx.setDocumentProperty("keywords", "Sample, Example, Properties");
16     xlsx.setDocumentProperty("description", "Created with Qt Xlsx");
17
18     xlsx.saveAs("Test.xlsx");
19     return 0;
20 }

4.9 extractdata Qt操作Excel 提取数据

 1 #include 
 2 #include "xlsxdocument.h"
 3
 4 int main()
 5 {
 6     {
 7         // Create a new .xlsx file.
 8         QXlsx::Document xlsx;
 9         xlsx.write("A1", "Hello Qt!");
10         xlsx.write("A2", 12345);
11         xlsx.write("A3", "=44+33");
12         xlsx.write("A4", true);
13         xlsx.write("A5", "http://qt-project.org");
14         xlsx.write("A6", QDate(2013, 12, 27));
15         xlsx.write("A7", QTime(6, 30));
16         xlsx.saveAs("Book1.xlsx");
17     }
18
19     //![0]
20     QXlsx::Document xlsx("Book1.xlsx");
21     //![0]
22
23     //![1]
24     qDebug() << xlsx.read("A1");
25     qDebug() << xlsx.read("A2");
26     qDebug() << xlsx.read("A3");
27     qDebug() << xlsx.read("A4");
28     qDebug() << xlsx.read("A5");
29     qDebug() << xlsx.read("A6");
30     qDebug() << xlsx.read("A7");
31     //![1]
32
33     //![2]
34     for (int row = 1; row < 10; ++row) {
35         if (QXlsx::Cell *cell = xlsx.cellAt(row, 1))
36             qDebug() << cell->value();
37     }
38     //![2]
39
40     return 0;
41 }

4.10 formulas Qt操作Excel 公式

 1 #include 
 2 #include "xlsxdocument.h"
 3 #include "xlsxformat.h"
 4 #include "xlsxworksheet.h"
 5 #include "xlsxcellformula.h"
 6
 7 QTXLSX_USE_NAMESPACE
 8
 9 int main()
10 {
11     //![0]
12     Document xlsx;
13     //![0]
14
15     //![1]
16     xlsx.setColumnWidth(1, 2, 40);
17     Format rAlign;
18     rAlign.setHorizontalAlignment(Format::AlignRight);
19     Format lAlign;
20     lAlign.setHorizontalAlignment(Format::AlignLeft);
21     xlsx.write("B3", 40, lAlign);
22     xlsx.write("B4", 30, lAlign);
23     xlsx.write("B5", 50, lAlign);
24     xlsx.write("A7", "SUM(B3:B5)=", rAlign);
25     xlsx.write("B7", "=SUM(B3:B5)", lAlign);
26     xlsx.write("A8", "AVERAGE(B3:B5)=", rAlign);
27     xlsx.write("B8", "=AVERAGE(B3:B5)", lAlign);
28     xlsx.write("A9", "MAX(B3:B5)=", rAlign);
29     xlsx.write("B9", "=MAX(B3:B5)", lAlign);
30     xlsx.write("A10", "MIN(B3:B5)=", rAlign);
31     xlsx.write("B10", "=MIN(B3:B5)", lAlign);
32     xlsx.write("A11", "COUNT(B3:B5)=", rAlign);
33     xlsx.write("B11", "=COUNT(B3:B5)", lAlign);
34
35     xlsx.write("A13", "IF(B7>100,\"large\",\"small\")=", rAlign);
36     xlsx.write("B13", "=IF(B7>100,\"large\",\"small\")", lAlign);
37
38     xlsx.write("A15", "SQRT(25)=", rAlign);
39     xlsx.write("B15", "=SQRT(25)", lAlign);
40     xlsx.write("A16", "RAND()=", rAlign);
41     xlsx.write("B16", "=RAND()", lAlign);
42     xlsx.write("A17", "2*PI()=", rAlign);
43     xlsx.write("B17", "=2*PI()", lAlign);
44
45     xlsx.write("A19", "UPPER(\"qtxlsx\")=", rAlign);
46     xlsx.write("B19", "=UPPER(\"qtxlsx\")", lAlign);
47     xlsx.write("A20", "LEFT(\"ubuntu\",3)=", rAlign);
48     xlsx.write("B20", "=LEFT(\"ubuntu\",3)", lAlign);
49     xlsx.write("A21", "LEN(\"Hello Qt!\")=", rAlign);
50     xlsx.write("B21", "=LEN(\"Hello Qt!\")", lAlign);
51     //![1]
52
53     //![2]
54     xlsx.addSheet("ArrayFormula");
55     Worksheet *sheet = xlsx.currentWorksheet();
56
57     for (int row = 2; row < 20; ++row) {
58         sheet->write(row, 2, row * 2); // B2:B19
59         sheet->write(row, 3, row * 3); // C2:C19
60     }
61     sheet->writeFormula("D2", CellFormula("B2:B19+C2:C19", "D2:D19", CellFormula::ArrayType));
62     sheet->writeFormula("E2",
63                         CellFormula("=CONCATENATE(\"The total is \",D2:D19,\" units\")", "E2:E19",
64                                     CellFormula::ArrayType));
65     //![2]
66
67     //![21]
68     xlsx.addSheet("SharedFormula");
69     sheet = xlsx.currentWorksheet();
70
71     for (int row = 2; row < 20; ++row) {
72         sheet->write(row, 2, row * 2); // B2:B19
73         sheet->write(row, 3, row * 3); // C2:C19
74     }
75     sheet->writeFormula("D2", CellFormula("=B2+C2", "D2:D19", CellFormula::SharedType));
76     sheet->writeFormula("E2",
77                         CellFormula("=CONCATENATE(\"The total is \",D2,\" units\")", "E2:E19",
78                                     CellFormula::SharedType));
79
80     //![21]
81
82     //![3]
83     xlsx.save();
84     //![3]
85
86     // Make sure that read/write works well.
87     Document xlsx2("Book1.xlsx");
88     Worksheet *sharedFormulaSheet = dynamic_cast(xlsx2.sheet("SharedFormula"));
89     for (int row = 2; row < 20; ++row) {
90         qDebug() << sharedFormulaSheet->read(row, 4);
91     }
92
93     xlsx2.saveAs("Book2.xlsx");
94
95     return 0;
96 }

4.11 hello Qt操作Excel 问候

1 #include
 2 #include "xlsxdocument.h"
 3
 4 int main()
 5 {
 6     //![0]
 7     QXlsx::Document xlsx;
 8     //![0]
 9
10     //![1]
11     xlsx.write("A1", "Hello Qt!");
12     xlsx.write("A2", 12345);
13     xlsx.write("A3", "=44+33");
14     xlsx.write("A4", true);
15     xlsx.write("A5", "http://qt-project.org");
16     xlsx.write("A6", QDate(2013, 12, 27));
17     xlsx.write("A7", QTime(6, 30));
18     //![1]
19
20     //![2]
21     xlsx.save();
22     //![2]
23
24     return 0;
25 }

4.12 hyperlinks Qt操作Excel 超链接

1 #include
 2 #include "xlsxdocument.h"
 3
 4 int main()
 5 {
 6     //![0]
 7     QXlsx::Document xlsx;
 8     //![0]
 9
10     //![1]
11     xlsx.write("A1", "http://qt-project.org");
12     xlsx.write("A2", "http://qt-project.org/wiki#0f68b904e33d9ac04605aecc958bcf52");
13     xlsx.write("A3", "mailto:info@qt-project.org");
14     xlsx.write("A4", "file:///C:/User/test/abc.txt");
15     //![1]
16
17     //![2]
18     xlsx.save();
19     //![2]
20
21     QXlsx::Document xlsx2("Book1.xlsx");
22     xlsx2.saveAs("Book2.xlsx");
23
24     return 0;
25 }

4.13 image Qt操作Excel 图像

1 #include
 2 #include "xlsxdocument.h"
 3
 4 int main(int argc, char **argv)
 5 {
 6     QGuiApplication(argc, argv);
 7
 8     QXlsx::Document xlsx;
 9     QImage image(40, 30, QImage::Format_RGB32);
10     image.fill(Qt::green);
11     for (int i = 0; i < 10; ++i)
12         xlsx.insertImage(10 * i, 5, image);
13     xlsx.saveAs("Book1.xlsx");
14
15     QXlsx::Document xlsx2("Book1.xlsx");
16     xlsx2.saveAs("Book2.xlsx");
17
18     return 0;
19 }

4.14 mergecells Qt操作Excel 合并单元格

1 #include "xlsxdocument.h"
 2 #include "xlsxformat.h"
 3
 4 QTXLSX_USE_NAMESPACE
 5
 6 int main()
 7 {
 8     Document xlsx;
 9     //![0]
10     Format format;
11     format.setHorizontalAlignment(Format::AlignHCenter);
12     format.setVerticalAlignment(Format::AlignVCenter);
13     //![0]
14     //![1]
15     xlsx.write("B4", "Hello Qt!");
16     xlsx.mergeCells("B4:F6", format);
17     xlsx.write("B8", 1);
18     xlsx.mergeCells("B8:C21", format);
19     xlsx.write("E8", 2);
20     xlsx.mergeCells("E8:F21", format);
21     //![1]
22     xlsx.save();
23
24     return 0;
25 }

4.15 numberformat Qt操作Excel 数值格式

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxformat.h"
 4
 5 int main(int argc, char **argv)
 6 {
 7     QGuiApplication(argc, argv);
 8
 9     QXlsx::Document xlsx;
10     xlsx.setColumnWidth(1, 4, 20.0);
11
12     QXlsx::Format header;
13     header.setFontBold(true);
14     header.setFontSize(20);
15
16     // Custom number formats
17     QStringList numFormats;
18     numFormats << "Qt #"
19                << "yyyy-mmm-dd"
20                << "$ #,##0.00"
21                << "[red]0.00";
22     xlsx.write(1, 1, "Raw data", header);
23     xlsx.write(1, 2, "Format", header);
24     xlsx.write(1, 3, "Shown value", header);
25     for (int i = 0; i < numFormats.size(); ++i) {
26         int row = i + 2;
27         xlsx.write(row, 1, 100.0);
28         xlsx.write(row, 2, numFormats[i]);
29         QXlsx::Format format;
30         format.setNumberFormat(numFormats[i]);
31         xlsx.write(row, 3, 100.0, format);
32     }
33
34     // Builtin number formats
35     xlsx.addSheet();
36     xlsx.setColumnWidth(1, 4, 20.0);
37     xlsx.write(1, 1, "Raw data", header);
38     xlsx.write(1, 2, "Builtin Format", header);
39     xlsx.write(1, 3, "Shown value", header);
40     for (int i = 0; i < 50; ++i) {
41         int row = i + 2;
42         int numFmt = i;
43         xlsx.write(row, 1, 100.0);
44         xlsx.write(row, 2, numFmt);
45         QXlsx::Format format;
46         format.setNumberFormatIndex(numFmt);
47         xlsx.write(row, 3, 100.0, format);
48     }
49
50     xlsx.save();
51     return 0;
52 }

4.16 richtext Qt操作Excel 富文本

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxrichstring.h"
 4 #include "xlsxworkbook.h"
 5 #include "xlsxformat.h"
 6
 7 int main()
 8 {
 9     //![0]
10     QXlsx::Document xlsx;
11     //![0]
12
13     //![1]
14     QXlsx::Format blue;
15     blue.setFontColor(Qt::blue);
16     QXlsx::Format red;
17     red.setFontColor(Qt::red);
18     red.setFontSize(15);
19     QXlsx::Format bold;
20     bold.setFontBold(true);
21
22     QXlsx::RichString rich;
23     rich.addFragment("Hello ", blue);
24     rich.addFragment("Qt ", red);
25     rich.addFragment("Xlsx", bold);
26     xlsx.write("B2", rich);
27
28     xlsx.workbook()->setHtmlToRichStringEnabled(true);
29     xlsx.write("B4", "Hello Qt Xlsx");
30
31     xlsx.write("B6", "Qt Xlsx");
32
33     //![1]
34
35     //![2]
36     xlsx.saveAs("Test1.xlsx");
37     //![2]
38
39     QXlsx::Document("Test1.xlsx");
40     xlsx.saveAs("Test2.xlsx");
41
42     return 0;
43 }

4.17 rowcolumn Qt操作Excel 行列

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxformat.h"
 4
 5 int main()
 6 {
 7     QXlsx::Document xlsx;
 8     xlsx.write(1, 2, "Row:0, Col:2 ==> (C1)");
 9
10     // Set the height of the first row to 50.0(points)
11     xlsx.setRowHeight(1, 50.0);
12
13     // Set the width of the third column to 40.0(chars)
14     xlsx.setColumnWidth(3, 3, 40.0);
15
16     // Set style for the row 11th.

17     QXlsx::Format format1;
18     format1.setFontBold(true);
19     format1.setFontColor(QColor(Qt::blue));
20     format1.setFontSize(20);
21     xlsx.write(11, 1, "Hello Row Style");
22     xlsx.write(11, 6, "Blue Color");
23     xlsx.setRowFormat(11, format1);
24     xlsx.setRowHeight(11, 41);
25
26     // Set style for the col [9th, 16th)
27     QXlsx::Format format2;
28     format2.setFontBold(true);
29     format2.setFontColor(QColor(Qt::magenta));
30     for (int row = 12; row 30; row++)
31         for (int col = 9; col 15; col++)
32             xlsx.write(row, col, row + col);
33     xlsx.setColumnWidth(9, 16, 5.0);
34     xlsx.setColumnFormat(9, 16, format2);
35
36     xlsx.save();
37     return 0;
38 }

4.18 style Qt操作Excel 设置样式

1 #include
 2 #include "xlsxdocument.h"
 3 #include "xlsxformat.h"
 4
 5 int main()
 6 {
 7     QXlsx::Document xlsx;
 8     QXlsx::Format format1;
 9     format1.setFontColor(QColor(Qt::red));
10     format1.setFontSize(15);
11     format1.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
12     format1.setBorderStyle(QXlsx::Format::BorderDashDotDot);
13     xlsx.write("A1", "Hello Qt!", format1);
14     xlsx.write("B3", 12345, format1);
15
16     QXlsx::Format format2;
17     format2.setFontBold(true);
18     format2.setFontUnderline(QXlsx::Format::FontUnderlineDouble);
19     format2.setFillPattern(QXlsx::Format::PatternLightUp);
20     xlsx.write("C5", "=44+33", format2);
21     xlsx.write("D7", true, format2);
22
23     QXlsx::Format format3;
24     format3.setFontBold(true);
25     format3.setFontColor(QColor(Qt::blue));
26     format3.setFontSize(20);
27     xlsx.write(11, 1, "Hello Row Style");
28     xlsx.write(11, 6, "Blue Color");
29     xlsx.setRowFormat(11, 41, format3);
30
31     QXlsx::Format format4;
32     format4.setFontBold(true);
33     format4.setFontColor(QColor(Qt::magenta));
34     for (int row = 21; row 40; row++)
35         for (int col = 9; col < 16; col++)
36             xlsx.write(row, col, row + col);
37     xlsx.setColumnFormat(9, 16, format4);
38
39     xlsx.write("A5", QDate(2013, 8, 29));
40
41     QXlsx::Format format6;
42     format6.setPatternBackgroundColor(QColor(Qt::green));
43     xlsx.write("A6", "Background color: green", format6);
44
45     xlsx.saveAs("book1.xlsx");
46
47     return 0;
48 }

4.19 worksheetoperations 工作表的操作

 1 #include 
 2 #include "xlsxdocument.h"
 3 #include "xlsxabstractsheet.h"
 4
 5 QTXLSX_USE_NAMESPACE
 6
 7 int main()
 8 {
 9     //![Create a xlsx file]
10     Document xlsx;
11
12     for (int i = 1; i < 20; ++i) {
13         for (int j = 1; j < 15; ++j)
14             xlsx.write(i, j, QString("R %1 C %2").arg(i).arg(j));
15     }
16     xlsx.addSheet();
17     xlsx.write(2, 2, "Hello Qt Xlsx");
18     xlsx.addSheet();
19     xlsx.write(3, 3, "This will be deleted...");
20
21     xlsx.addSheet("HiddenSheet");
22     xlsx.currentSheet()->setHidden(true);
23     xlsx.write("A1", "This sheet is hidden.");
24
25     xlsx.addSheet("VeryHiddenSheet");
26     xlsx.sheet("VeryHiddenSheet")->setSheetState(AbstractSheet::SS_VeryHidden);
27     xlsx.write("A1", "This sheet is very hidden.");
28
29     xlsx.save(); // Default name is "Book1.xlsx"
30     //![Create a xlsx file]
31
32     Document xlsx2("Book1.xlsx");
33     //![add_copy_move_delete]
34     xlsx2.renameSheet("Sheet1", "TheFirstSheet");
35
36     xlsx2.copySheet("TheFirstSheet", "CopyOfTheFirst");
37
38     xlsx2.selectSheet("CopyOfTheFirst");
39     xlsx2.write(25, 2, "On the Copy Sheet");
40
41     xlsx2.deleteSheet("Sheet3");
42
43     xlsx2.moveSheet("Sheet2", 0);
44     //![add_copy_move_delete]
45
46     //![show_hidden_sheets]
47     xlsx2.sheet("HiddenSheet")->setVisible(true);
48     xlsx2.sheet("VeryHiddenSheet")->setVisible(true);
49     //![show_hidden_sheets]
50
51     xlsx2.saveAs("Book2.xlsx");
52     return 0;
53 }

Original: https://www.cnblogs.com/ybqjymy/p/16520666.html
Author: 一杯清酒邀明月
Title: Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546565/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球