Debao Zhang
11 years ago
11 changed files with 1078 additions and 689 deletions
@ -0,0 +1,172 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#ifndef XLSXFORMAT_P_H |
||||
|
#define XLSXFORMAT_P_H |
||||
|
#include "xlsxformat.h" |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
struct NumberData |
||||
|
{ |
||||
|
NumberData() : formatIndex(0) {} |
||||
|
|
||||
|
int formatIndex; |
||||
|
}; |
||||
|
|
||||
|
struct FontData |
||||
|
{ |
||||
|
FontData() : |
||||
|
size(11), italic(false), strikeOut(false), color(QColor()), bold(false) |
||||
|
, scirpt(Format::FontScriptNormal), underline(Format::FontUnderlineNone) |
||||
|
, outline(false), shadow(false), name("Calibri"), family(2), charset(0) |
||||
|
, scheme("minor"), condense(0), extend(0) |
||||
|
, _dirty(true), _redundant(false), _index(-1) |
||||
|
|
||||
|
{} |
||||
|
|
||||
|
int size; |
||||
|
bool italic; |
||||
|
bool strikeOut; |
||||
|
QColor color; |
||||
|
bool bold; |
||||
|
Format::FontScript scirpt; |
||||
|
Format::FontUnderline underline; |
||||
|
bool outline; |
||||
|
bool shadow; |
||||
|
QString name; |
||||
|
int family; |
||||
|
int charset; |
||||
|
QString scheme; |
||||
|
int condense; |
||||
|
int extend; |
||||
|
|
||||
|
//helper member
|
||||
|
bool _dirty; //key re-generated is need.
|
||||
|
QByteArray _key; |
||||
|
bool _redundant; //same font already used by some other Formats
|
||||
|
int _index; //index in the Font list
|
||||
|
}; |
||||
|
|
||||
|
struct AlignmentData |
||||
|
{ |
||||
|
AlignmentData() : |
||||
|
alignH(Format::AlignHGeneral), alignV(Format::AlignBottom) |
||||
|
, wrap(false), rotation(0), indent(0), shinkToFit(false) |
||||
|
{} |
||||
|
|
||||
|
Format::HorizontalAlignment alignH; |
||||
|
Format::VerticalAlignment alignV; |
||||
|
bool wrap; |
||||
|
int rotation; |
||||
|
int indent; |
||||
|
bool shinkToFit; |
||||
|
}; |
||||
|
|
||||
|
struct BorderData |
||||
|
{ |
||||
|
BorderData() : |
||||
|
left(Format::BorderNone), right(Format::BorderNone), top(Format::BorderNone) |
||||
|
,bottom(Format::BorderNone), diagonal(Format::BorderNone) |
||||
|
,diagonalType(Format::DiagonalBorderNone) |
||||
|
,_dirty(true), _redundant(false), _index(-1) |
||||
|
{} |
||||
|
|
||||
|
Format::BorderStyle left; |
||||
|
Format::BorderStyle right; |
||||
|
Format::BorderStyle top; |
||||
|
Format::BorderStyle bottom; |
||||
|
Format::BorderStyle diagonal; |
||||
|
QColor leftColor; |
||||
|
QColor rightColor; |
||||
|
QColor topColor; |
||||
|
QColor bottomColor; |
||||
|
QColor diagonalColor; |
||||
|
Format::DiagonalBorderType diagonalType; |
||||
|
|
||||
|
//helper member
|
||||
|
bool _dirty; //key re-generated is need.
|
||||
|
QByteArray _key; |
||||
|
bool _redundant; //same border already used by some other Formats
|
||||
|
int _index; //index in the border list
|
||||
|
}; |
||||
|
|
||||
|
struct FillData { |
||||
|
FillData() : |
||||
|
pattern(Format::PatternNone) |
||||
|
,_dirty(true), _redundant(false), _index(-1) |
||||
|
{} |
||||
|
|
||||
|
Format::FillPattern pattern; |
||||
|
QColor bgColor; |
||||
|
QColor fgColor; |
||||
|
|
||||
|
//helper member
|
||||
|
bool _dirty; //key re-generated is need.
|
||||
|
QByteArray _key; |
||||
|
bool _redundant; //same border already used by some other Formats
|
||||
|
int _index; //index in the border list
|
||||
|
}; |
||||
|
|
||||
|
struct ProtectionData { |
||||
|
ProtectionData() : |
||||
|
locked(false), hidden(false) |
||||
|
{} |
||||
|
|
||||
|
bool locked; |
||||
|
bool hidden; |
||||
|
}; |
||||
|
|
||||
|
class FormatPrivate |
||||
|
{ |
||||
|
Q_DECLARE_PUBLIC(Format) |
||||
|
public: |
||||
|
FormatPrivate(Format *p); |
||||
|
|
||||
|
NumberData numberData; |
||||
|
FontData fontData; |
||||
|
AlignmentData alignmentData; |
||||
|
BorderData borderData; |
||||
|
FillData fillData; |
||||
|
ProtectionData protectionData; |
||||
|
|
||||
|
bool dirty; //The key re-generation is need.
|
||||
|
QByteArray formatKey; |
||||
|
|
||||
|
static QList<Format *> s_xfFormats; |
||||
|
int xf_index; |
||||
|
|
||||
|
static QList<Format *> s_dxfFormats; |
||||
|
bool is_dxf_fomat; |
||||
|
int dxf_index; |
||||
|
|
||||
|
int theme; |
||||
|
int color_indexed; |
||||
|
|
||||
|
Format *q_ptr; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#endif // XLSXFORMAT_P_H
|
@ -0,0 +1,58 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#ifndef XLSXWORKBOOK_P_H |
||||
|
#define XLSXWORKBOOK_P_H |
||||
|
#include "xlsxworkbook.h" |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
class WorkbookPrivate |
||||
|
{ |
||||
|
Q_DECLARE_PUBLIC(Workbook) |
||||
|
public: |
||||
|
WorkbookPrivate(Workbook *q); |
||||
|
|
||||
|
Workbook *q_ptr; |
||||
|
|
||||
|
SharedStrings *sharedStrings; |
||||
|
QList<Worksheet *> worksheets; |
||||
|
Styles *styles; |
||||
|
|
||||
|
bool strings_to_numbers_enabled; |
||||
|
bool date1904; |
||||
|
|
||||
|
int x_window; |
||||
|
int y_window; |
||||
|
int window_width; |
||||
|
int window_height; |
||||
|
|
||||
|
int activesheet; |
||||
|
int firstsheet; |
||||
|
int table_count; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#endif // XLSXWORKBOOK_P_H
|
@ -0,0 +1,129 @@ |
|||||
|
/****************************************************************************
|
||||
|
** Copyright (c) 2013 Debao Zhang <hello@debao.me> |
||||
|
** All right reserved. |
||||
|
** |
||||
|
** Permission is hereby granted, free of charge, to any person obtaining |
||||
|
** a copy of this software and associated documentation files (the |
||||
|
** "Software"), to deal in the Software without restriction, including |
||||
|
** without limitation the rights to use, copy, modify, merge, publish, |
||||
|
** distribute, sublicense, and/or sell copies of the Software, and to |
||||
|
** permit persons to whom the Software is furnished to do so, subject to |
||||
|
** the following conditions: |
||||
|
** |
||||
|
** The above copyright notice and this permission notice shall be |
||||
|
** included in all copies or substantial portions of the Software. |
||||
|
** |
||||
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
|
** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
|
** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
** |
||||
|
****************************************************************************/ |
||||
|
#ifndef XLSXWORKSHEET_P_H |
||||
|
#define XLSXWORKSHEET_P_H |
||||
|
#include "xlsxworksheet.h" |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
struct XlsxCellData |
||||
|
{ |
||||
|
enum CellDataType { |
||||
|
Blank, |
||||
|
String, |
||||
|
Number, |
||||
|
Formula, |
||||
|
ArrayFormula, |
||||
|
Boolean, |
||||
|
DateTime |
||||
|
}; |
||||
|
XlsxCellData(const QVariant &data=QVariant(), CellDataType type=Blank, Format *format=0) : |
||||
|
value(data), dataType(type), format(format) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
QVariant value; |
||||
|
QString formula; |
||||
|
CellDataType dataType; |
||||
|
Format *format; |
||||
|
}; |
||||
|
|
||||
|
struct XlsxRowInfo |
||||
|
{ |
||||
|
XlsxRowInfo(double height, Format *format, bool hidden) : |
||||
|
height(height), format(format), hidden(hidden) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
double height; |
||||
|
Format *format; |
||||
|
bool hidden; |
||||
|
}; |
||||
|
|
||||
|
struct XlsxColumnInfo |
||||
|
{ |
||||
|
XlsxColumnInfo(int column_min, int column_max, double width, Format *format, bool hidden) : |
||||
|
column_min(column_min), column_max(column_max), width(width), format(format), hidden(hidden) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
int column_min; |
||||
|
int column_max; |
||||
|
double width; |
||||
|
Format *format; |
||||
|
bool hidden; |
||||
|
}; |
||||
|
|
||||
|
class WorksheetPrivate |
||||
|
{ |
||||
|
Q_DECLARE_PUBLIC(Worksheet) |
||||
|
public: |
||||
|
WorksheetPrivate(Worksheet *p); |
||||
|
~WorksheetPrivate(); |
||||
|
int checkDimensions(int row, int col, bool ignore_row=false, bool ignore_col=false); |
||||
|
QString generateDimensionString(); |
||||
|
void calculateSpans(); |
||||
|
void writeSheetData(XmlStreamWriter &writer); |
||||
|
void writeCellData(XmlStreamWriter &writer, int row, int col, XlsxCellData *cell); |
||||
|
|
||||
|
Workbook *workbook; |
||||
|
QMap<int, QMap<int, XlsxCellData *> > cellTable; |
||||
|
QMap<int, QMap<int, QString> > comments; |
||||
|
QMap<int, XlsxRowInfo *> rowsInfo; |
||||
|
QList<XlsxColumnInfo *> colsInfo; |
||||
|
QMap<int, XlsxColumnInfo *> colsInfoHelper;//Not owns the XlsxColumnInfo
|
||||
|
|
||||
|
int xls_rowmax; |
||||
|
int xls_colmax; |
||||
|
int xls_strmax; |
||||
|
int dim_rowmin; |
||||
|
int dim_rowmax; |
||||
|
int dim_colmin; |
||||
|
int dim_colmax; |
||||
|
int previous_row; |
||||
|
|
||||
|
QMap<int, QString> row_spans; |
||||
|
|
||||
|
int outline_row_level; |
||||
|
int outline_col_level; |
||||
|
|
||||
|
int default_row_height; |
||||
|
bool default_row_zeroed; |
||||
|
|
||||
|
QString name; |
||||
|
int index; |
||||
|
bool hidden; |
||||
|
bool selected; |
||||
|
bool actived; |
||||
|
bool right_to_left; |
||||
|
bool show_zeros; |
||||
|
|
||||
|
Worksheet *q_ptr; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
#endif // XLSXWORKSHEET_P_H
|
Loading…
Reference in new issue