mirror of
https://github.com/QtExcel/QXlsx.git
synced 2025-02-06 05:08:22 +08:00
setting chart title
This commit is contained in:
parent
d961dc8556
commit
b4ba663b17
18
Example.md
18
Example.md
@ -1,11 +1,21 @@
|
|||||||
# QXlsx Examples
|
# QXlsx Examples
|
||||||
|
|
||||||
## HelloWorld
|
## HelloWorld
|
||||||
|
|
||||||
- Hello world example
|
- Hello world example
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
// main.cpp
|
// main.cpp
|
||||||
|
|
||||||
|
#include <QtGlobal>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QtCore>
|
||||||
|
#include <QVariant>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
// [0] include QXlsx headers
|
// [0] include QXlsx headers
|
||||||
#include "xlsxdocument.h"
|
#include "xlsxdocument.h"
|
||||||
#include "xlsxchartsheet.h"
|
#include "xlsxchartsheet.h"
|
||||||
@ -42,23 +52,27 @@ int main(int argc, char *argv[])
|
|||||||
```
|
```
|
||||||
|
|
||||||
## TestExcel
|
## TestExcel
|
||||||
|
|
||||||
- :zap: Basic examples based on QtXlsx examples
|
- :zap: Basic examples based on QtXlsx examples
|
||||||
|
|
||||||
## HelloAndroid : Android Example
|
## HelloAndroid : Android Example
|
||||||
|
|
||||||
- See 'HelloAndroid' example using QML and native C++.
|
- See 'HelloAndroid' example using QML and native C++.
|
||||||
|
|
||||||
- Qt 5.11.1 / QtCreator 4.6.2 / gcc 4.9 / Android x86 (using Emulator [Android Oreo]) / Android Studio 3.1.3 (Android NDK 17.1)
|
- Qt 5.11.1 / QtCreator 4.6.2 / gcc 4.9 / Android x86 (using Emulator [Android Oreo]) / Android Studio 3.1.3 (Android NDK 17.1)
|
||||||
|
|
||||||
![](markdown.data/android.jpg)
|
![](markdown.data/android.jpg)
|
||||||
|
|
||||||
## Copycat : Windows Widget Example
|
## Copycat : Windows Widget Example
|
||||||
- Load xlsx file and display on Qt widgets.
|
- Load xlsx file and display on Qt widgets.
|
||||||
- Print xlsx to papaer. (TODO: save xlsx)
|
- Print xlsx to papaer.
|
||||||
|
- TODO: save xlsx.
|
||||||
|
|
||||||
![](markdown.data/copycat.png)
|
![](markdown.data/copycat.png)
|
||||||
|
|
||||||
## WebServer : WebServer Example
|
## WebServer : WebServer Example
|
||||||
- Load xlsx file and display on Web.
|
- Load xlsx file and display on Web.
|
||||||
- C++ 14 is required.
|
|
||||||
- Connect to `http://127.0.0.1:3001`
|
- Connect to `http://127.0.0.1:3001`
|
||||||
|
- C++ 14 is required. Old compilers is not supported.
|
||||||
|
|
||||||
![](markdown.data/webserver.png)
|
![](markdown.data/webserver.png)
|
||||||
|
@ -81,6 +81,7 @@ public:
|
|||||||
void setChartType(ChartType type);
|
void setChartType(ChartType type);
|
||||||
void setChartStyle(int id);
|
void setChartStyle(int id);
|
||||||
void setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle);
|
void setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle);
|
||||||
|
void setChartTitle(QString strchartTitle);
|
||||||
|
|
||||||
void saveToXmlFile(QIODevice *device) const;
|
void saveToXmlFile(QIODevice *device) const;
|
||||||
bool loadFromXmlFile(QIODevice *device);
|
bool loadFromXmlFile(QIODevice *device);
|
||||||
|
@ -118,6 +118,7 @@ public:
|
|||||||
bool loadXmlAxis(QXmlStreamReader &reader);
|
bool loadXmlAxis(QXmlStreamReader &reader);
|
||||||
|
|
||||||
void saveXmlChart(QXmlStreamWriter &writer) const;
|
void saveXmlChart(QXmlStreamWriter &writer) const;
|
||||||
|
void saveXmlChartTitle(QXmlStreamWriter &writer) const;
|
||||||
void saveXmlPieChart(QXmlStreamWriter &writer) const;
|
void saveXmlPieChart(QXmlStreamWriter &writer) const;
|
||||||
void saveXmlBarChart(QXmlStreamWriter &writer) const;
|
void saveXmlBarChart(QXmlStreamWriter &writer) const;
|
||||||
void saveXmlLineChart(QXmlStreamWriter &writer) const;
|
void saveXmlLineChart(QXmlStreamWriter &writer) const;
|
||||||
@ -127,6 +128,7 @@ public:
|
|||||||
void saveXmlSer(QXmlStreamWriter &writer, XlsxSeries *ser, int id) const;
|
void saveXmlSer(QXmlStreamWriter &writer, XlsxSeries *ser, int id) const;
|
||||||
void saveXmlAxes(QXmlStreamWriter &writer) const;
|
void saveXmlAxes(QXmlStreamWriter &writer) const;
|
||||||
|
|
||||||
|
public:
|
||||||
Chart::ChartType chartType;
|
Chart::ChartType chartType;
|
||||||
|
|
||||||
QList< QSharedPointer<XlsxSeries> > seriesList;
|
QList< QSharedPointer<XlsxSeries> > seriesList;
|
||||||
@ -134,6 +136,8 @@ public:
|
|||||||
|
|
||||||
QMap< XlsxAxis::AxisPos, QString > axisNames; // dev22
|
QMap< XlsxAxis::AxisPos, QString > axisNames; // dev22
|
||||||
|
|
||||||
|
QString chartTitle;
|
||||||
|
|
||||||
AbstractSheet *sheet;
|
AbstractSheet *sheet;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ void Chart::setChartStyle(int id)
|
|||||||
|
|
||||||
void Chart::setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle)
|
void Chart::setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle)
|
||||||
{
|
{
|
||||||
Q_D(Chart);
|
Q_D(Chart);
|
||||||
|
|
||||||
if ( axisTitle.isEmpty() )
|
if ( axisTitle.isEmpty() )
|
||||||
return;
|
return;
|
||||||
@ -176,6 +176,14 @@ void Chart::setAxisTitle(Chart::ChartAxisPos pos, QString axisTitle)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dev25
|
||||||
|
void Chart::setChartTitle(QString strchartTitle)
|
||||||
|
{
|
||||||
|
Q_D(Chart);
|
||||||
|
|
||||||
|
d->chartTitle = strchartTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \internal
|
* \internal
|
||||||
@ -359,8 +367,18 @@ QString ChartPrivate::loadXmlNumRef(QXmlStreamReader &reader)
|
|||||||
|
|
||||||
void ChartPrivate::saveXmlChart(QXmlStreamWriter &writer) const
|
void ChartPrivate::saveXmlChart(QXmlStreamWriter &writer) const
|
||||||
{
|
{
|
||||||
|
//----------------------------------------------------
|
||||||
|
// c:chart
|
||||||
writer.writeStartElement(QStringLiteral("c:chart"));
|
writer.writeStartElement(QStringLiteral("c:chart"));
|
||||||
|
|
||||||
|
//----------------------------------------------------
|
||||||
|
// c:title
|
||||||
|
|
||||||
|
saveXmlChartTitle(writer); // wrtie 'chart title'
|
||||||
|
|
||||||
|
//----------------------------------------------------
|
||||||
|
// c:plotArea
|
||||||
|
|
||||||
writer.writeStartElement(QStringLiteral("c:plotArea"));
|
writer.writeStartElement(QStringLiteral("c:plotArea"));
|
||||||
|
|
||||||
switch (chartType)
|
switch (chartType)
|
||||||
@ -388,6 +406,7 @@ void ChartPrivate::saveXmlChart(QXmlStreamWriter &writer) const
|
|||||||
saveXmlDoughnutChart(writer);
|
saveXmlDoughnutChart(writer);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
// ??
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,6 +417,57 @@ void ChartPrivate::saveXmlChart(QXmlStreamWriter &writer) const
|
|||||||
writer.writeEndElement(); // c:chart
|
writer.writeEndElement(); // c:chart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dev25 {{ // wrtie 'chart title'
|
||||||
|
void ChartPrivate::saveXmlChartTitle(QXmlStreamWriter &writer) const
|
||||||
|
{
|
||||||
|
if ( chartTitle.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
writer.writeStartElement(QStringLiteral("c:title"));
|
||||||
|
|
||||||
|
writer.writeStartElement(QStringLiteral("c:tx"));
|
||||||
|
|
||||||
|
writer.writeStartElement(QStringLiteral("c:rich"));
|
||||||
|
|
||||||
|
writer.writeEmptyElement(QStringLiteral("a:bodyPr")); // <a:bodyPr/>
|
||||||
|
|
||||||
|
writer.writeEmptyElement(QStringLiteral("a:lstStyle")); // <a:lstStyle/>
|
||||||
|
|
||||||
|
writer.writeStartElement(QStringLiteral("a:p"));
|
||||||
|
|
||||||
|
// <a:pPr lvl="0">
|
||||||
|
writer.writeStartElement(QStringLiteral("a:pPr"));
|
||||||
|
writer.writeAttribute(QStringLiteral("lvl"), QStringLiteral("0"));
|
||||||
|
|
||||||
|
// <a:defRPr b="0"/>
|
||||||
|
writer.writeStartElement(QStringLiteral("a:defRPr"));
|
||||||
|
writer.writeAttribute(QStringLiteral("b"), QStringLiteral("0"));
|
||||||
|
writer.writeEndElement(); // a:defRPr
|
||||||
|
|
||||||
|
writer.writeEndElement(); // a:pPr
|
||||||
|
|
||||||
|
writer.writeStartElement(QStringLiteral("a:r"));
|
||||||
|
|
||||||
|
// <a:t>chart name</a:t>
|
||||||
|
writer.writeTextElement(QStringLiteral("a:t"), chartTitle);
|
||||||
|
|
||||||
|
writer.writeEndElement(); // a:r
|
||||||
|
|
||||||
|
writer.writeEndElement(); // a:p
|
||||||
|
|
||||||
|
writer.writeEndElement(); // c:rich
|
||||||
|
|
||||||
|
writer.writeEndElement(); // c:tx
|
||||||
|
|
||||||
|
// <c:overlay val="0"/>
|
||||||
|
writer.writeStartElement(QStringLiteral("c:overlay"));
|
||||||
|
writer.writeAttribute(QStringLiteral("val"), QStringLiteral("0"));
|
||||||
|
writer.writeEndElement(); // c:overlay
|
||||||
|
|
||||||
|
writer.writeEndElement(); // c:title
|
||||||
|
}
|
||||||
|
// }}
|
||||||
|
|
||||||
void ChartPrivate::saveXmlPieChart(QXmlStreamWriter &writer) const
|
void ChartPrivate::saveXmlPieChart(QXmlStreamWriter &writer) const
|
||||||
{
|
{
|
||||||
QString name = chartType==Chart::CT_Pie ? QStringLiteral("c:pieChart") : QStringLiteral("c:pie3DChart");
|
QString name = chartType==Chart::CT_Pie ? QStringLiteral("c:pieChart") : QStringLiteral("c:pie3DChart");
|
||||||
|
31
README.ko.md
31
README.ko.md
@ -12,35 +12,10 @@
|
|||||||
## 사용하는 방법
|
## 사용하는 방법
|
||||||
- [예제](Example.md)를 보세요
|
- [예제](Example.md)를 보세요
|
||||||
- HelloWorld : 헬로우 월드 예제 (가장 기본적인 구조)
|
- HelloWorld : 헬로우 월드 예제 (가장 기본적인 구조)
|
||||||
- TestExcel : 기본 예제 (QtXlsx 예제 기반)
|
- TestExcel : QtXlsx 예제에 기반한 기본 예제
|
||||||
- HelloAndroid : 안드로이드에서 xlsx 파일 열기
|
- HelloAndroid : 안드로이드에서 xlsx 파일 열기
|
||||||
- Copycat : xlsx 파일을 읽어 위젯으로 표시. xlsx 파일 인쇄. (할일: xlsx 파일로 저장)
|
- Copycat : xlsx 파일을 읽어 위젯으로 표시. xlsx 파일 인쇄.
|
||||||
- WebServer : xlsx 파일을 읽어 웹으로 표시 (`http://127.0.0.1:3001`)
|
- WebServer : xlsx 파일을 읽어 웹으로 표시
|
||||||
|
|
||||||
### 활용 예제 (Hello excel)
|
|
||||||
|
|
||||||
#### :one: 엑셀(xlsx) 파일 쓰기
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
QXlsx::Document xlsx;
|
|
||||||
xlsx.write("A1", "Hello Qt!"); // 셀(A,1)에 'Hello Qt!'값을 설정. 공유 문자열 타입으로 설정됨.
|
|
||||||
xlsx.saveAs("Test.xlsx"); // 'Test.xlsx'라는 이름으로 엑셀 파일을 저장.
|
|
||||||
```
|
|
||||||
|
|
||||||
#### :two: 엑셀(xlsx) 파일 읽기
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
Document xlsx("Test.xlsx"); // 엑셀 파일 읽기
|
|
||||||
if (!xlsx.isLoadPackage()) {
|
|
||||||
return; // 엑셀 파일 읽기 실패
|
|
||||||
}
|
|
||||||
int row = 1; int col = 2;
|
|
||||||
Cell* cell = xlsx.cellAt(row, col); // Cell의 pointer를 얻음 (행(row)는 1번째, 열(column)은 2번째)
|
|
||||||
if ( cell == NULL )
|
|
||||||
continue; // 해당 행렬의 cell값이 설정되어 있지 않음
|
|
||||||
QVariant var = cell->readValue(); // 셀값을 읽음 (숫자(double), 날자(QDateTime), 문자열(QString) ...)
|
|
||||||
qDebug() << var; // 값 표시
|
|
||||||
```
|
|
||||||
|
|
||||||
## 설정하는 방법 (설치)
|
## 설정하는 방법 (설치)
|
||||||
|
|
||||||
|
31
README.md
31
README.md
@ -11,36 +11,11 @@
|
|||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
- See [examples](Example.md)
|
- See [examples](Example.md)
|
||||||
- HelloWorld : Hello world example (The most basic structure)
|
- HelloWorld : Hello world example (the most basic structure)
|
||||||
- TestExcel : basic samples based on QtXlsx samples
|
- TestExcel : basic samples based on QtXlsx samples
|
||||||
- HelloAndroid : read xlsx on Android
|
- HelloAndroid : read xlsx on Android
|
||||||
- Copycat : load xlsx file and display on widget. print xlsx file. (TODO: save xlsx)
|
- Copycat : load xlsx file and display on widget. print xlsx file.
|
||||||
- WebServer : load xlsx and display to web (`http://127.0.0.1:3001`)
|
- WebServer : load xlsx and display to web
|
||||||
|
|
||||||
### Example (Hello excel)
|
|
||||||
|
|
||||||
#### :one: Writing excel file(*.xlsx)
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
QXlsx::Document xlsx;
|
|
||||||
xlsx.write("A1", "Hello Qt!"); // write "Hello Qt!" to cell(A,1). it's shared string.
|
|
||||||
xlsx.saveAs("Test.xlsx"); // save the document as 'Test.xlsx'
|
|
||||||
```
|
|
||||||
|
|
||||||
#### :two: Reading excel file(*.xlsx)
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
Document xlsx("Test.xlsx"); // load excel file
|
|
||||||
if (!xlsx.isLoadPackage()) {
|
|
||||||
return; // failed to load excel
|
|
||||||
}
|
|
||||||
int row = 1; int col = 2;
|
|
||||||
Cell* cell = xlsx.cellAt(row, col); // get cell pointer. (row is 1. column is 2.)
|
|
||||||
if ( cell == NULL )
|
|
||||||
continue; // cell vaule is not set
|
|
||||||
QVariant var = cell->readValue(); // read cell value (number(double), QDateTime, QString ...)
|
|
||||||
qDebug() << var; // display value
|
|
||||||
```
|
|
||||||
|
|
||||||
## How to set up (Installation)
|
## How to set up (Installation)
|
||||||
|
|
||||||
|
@ -149,6 +149,7 @@ void sat_calc::generate_report()
|
|||||||
Crom->addSeries( CellRange(chrom_data_array) );
|
Crom->addSeries( CellRange(chrom_data_array) );
|
||||||
Crom->setAxisTitle( Chart::Left, QString("left title") ); // dev24
|
Crom->setAxisTitle( Chart::Left, QString("left title") ); // dev24
|
||||||
Crom->setAxisTitle( Chart::Bottom, QString("bottom title") ); // dev24
|
Crom->setAxisTitle( Chart::Bottom, QString("bottom title") ); // dev24
|
||||||
|
Crom->setChartTitle( QString("hello chart") ); // dev25
|
||||||
|
|
||||||
qDebug() << "[debug] chrom_data_array : " << chrom_data_array;
|
qDebug() << "[debug] chrom_data_array : " << chrom_data_array;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user