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