mirror of
https://github.com/ONLYOFFICE/sdkjs.git
synced 2026-04-07 14:09:12 +08:00
git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47074 954022d7-b5bf-4e40-9824-e11837661b57
6168 lines
256 KiB
JavaScript
6168 lines
256 KiB
JavaScript
/** @enum */
|
||
var c_oSerFormat = {
|
||
Version:2, //1.0.0.2
|
||
Signature: "XLSY"
|
||
};
|
||
var g_nCurFileVersion = c_oSerFormat.Version;
|
||
//dif:
|
||
//Version:2 добавлены свойства колонок и строк CustomWidth, CustomHeight(раньше считались true)
|
||
/** @enum */
|
||
var c_oSerTableTypes =
|
||
{
|
||
Other: 0,
|
||
SharedStrings: 1,
|
||
Styles: 2,
|
||
Workbook: 3,
|
||
Worksheets: 4,
|
||
CalcChain: 5
|
||
};
|
||
/** @enum */
|
||
var c_oSerStylesTypes =
|
||
{
|
||
Borders: 0,
|
||
Border: 1,
|
||
CellXfs: 2,
|
||
Xfs: 3,
|
||
Fills: 4,
|
||
Fill: 5,
|
||
Fonts: 6,
|
||
Font: 7,
|
||
NumFmts: 8,
|
||
NumFmt: 9,
|
||
Dxfs: 10,
|
||
Dxf: 11,
|
||
TableStyles: 12
|
||
};
|
||
/** @enum */
|
||
var c_oSerBorderTypes =
|
||
{
|
||
Bottom: 0,
|
||
Diagonal: 1,
|
||
End: 2,
|
||
Horizontal: 3,
|
||
Start: 4,
|
||
Top: 5,
|
||
Vertical: 6,
|
||
DiagonalDown: 7,
|
||
DiagonalUp: 8,
|
||
Outline: 9
|
||
};
|
||
/** @enum */
|
||
var c_oSerBorderPropTypes =
|
||
{
|
||
Color: 0,
|
||
Style: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSerXfsTypes =
|
||
{
|
||
ApplyAlignment: 0,
|
||
ApplyBorder: 1,
|
||
ApplyFill: 2,
|
||
ApplyFont: 3,
|
||
ApplyNumberFormat: 4,
|
||
ApplyProtection: 5,
|
||
BorderId: 6,
|
||
FillId: 7,
|
||
FontId: 8,
|
||
NumFmtId: 9,
|
||
PivotButton: 10,
|
||
QuotePrefix: 11,
|
||
XfId: 12,
|
||
Aligment: 13,
|
||
Protection: 14
|
||
};
|
||
/** @enum */
|
||
var c_oSerAligmentTypes =
|
||
{
|
||
Horizontal: 0,
|
||
Indent: 1,
|
||
JustifyLastLine: 2,
|
||
ReadingOrder: 3,
|
||
RelativeIndent: 4,
|
||
ShrinkToFit: 5,
|
||
TextRotation: 6,
|
||
Vertical: 7,
|
||
WrapText: 8
|
||
};
|
||
/** @enum */
|
||
var c_oSerFillTypes =
|
||
{
|
||
PatternFill: 0,
|
||
PatternFillBgColor: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSerFontTypes =
|
||
{
|
||
Bold: 0,
|
||
Color: 1,
|
||
Italic: 3,
|
||
RFont: 4,
|
||
Strike: 5,
|
||
Sz: 6,
|
||
Underline: 7,
|
||
VertAlign: 8
|
||
};
|
||
/** @enum */
|
||
var c_oSerNumFmtTypes =
|
||
{
|
||
FormatCode: 0,
|
||
NumFmtId: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSerSharedStringTypes =
|
||
{
|
||
Si: 0,
|
||
Run: 1,
|
||
RPr: 2,
|
||
Text: 3
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorkbookTypes =
|
||
{
|
||
WorkbookPr: 0,
|
||
BookViews: 1,
|
||
WorkbookView: 2,
|
||
DefinedNames: 3,
|
||
DefinedName: 4
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorkbookPrTypes =
|
||
{
|
||
Date1904: 0,
|
||
DateCompatibility: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorkbookViewTypes =
|
||
{
|
||
ActiveTab: 0
|
||
};
|
||
/** @enum */
|
||
var c_oSerDefinedNameTypes =
|
||
{
|
||
Name: 0,
|
||
Ref: 1,
|
||
LocalSheetId: 2
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorksheetsTypes =
|
||
{
|
||
Worksheet: 0,
|
||
WorksheetProp: 1,
|
||
Cols: 2,
|
||
Col: 3,
|
||
Dimension: 4,
|
||
Hyperlinks: 5,
|
||
Hyperlink: 6,
|
||
MergeCells: 7,
|
||
MergeCell: 8,
|
||
SheetData: 9,
|
||
Row: 10,
|
||
SheetFormatPr: 11,
|
||
Drawings: 12,
|
||
Drawing: 13,
|
||
PageMargins: 14,
|
||
PageSetup: 15,
|
||
PrintOptions: 16,
|
||
Autofilter: 17,
|
||
TableParts: 18,
|
||
Comments: 19,
|
||
Comment: 20
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorksheetPropTypes =
|
||
{
|
||
Name: 0,
|
||
SheetId: 1,
|
||
State: 2
|
||
};
|
||
/** @enum */
|
||
var c_oSerWorksheetColTypes =
|
||
{
|
||
BestFit: 0,
|
||
Hidden: 1,
|
||
Max: 2,
|
||
Min: 3,
|
||
Style: 4,
|
||
Width: 5,
|
||
CustomWidth: 6
|
||
};
|
||
/** @enum */
|
||
var c_oSerHyperlinkTypes =
|
||
{
|
||
Ref: 0,
|
||
Hyperlink: 1,
|
||
Location: 2,
|
||
Tooltip: 3
|
||
};
|
||
/** @enum */
|
||
var c_oSerSheetFormatPrTypes =
|
||
{
|
||
DefaultColWidth: 0,
|
||
DefaultRowHeight: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSerRowTypes =
|
||
{
|
||
Row: 0,
|
||
Style: 1,
|
||
Height: 2,
|
||
Hidden: 3,
|
||
Cells: 4,
|
||
Cell: 5,
|
||
CustomHeight: 6
|
||
};
|
||
/** @enum */
|
||
var c_oSerCellTypes =
|
||
{
|
||
Ref: 0,
|
||
Style: 1,
|
||
Type: 2,
|
||
Value: 3,
|
||
Formula: 4
|
||
};
|
||
/** @enum */
|
||
var c_oSerFormulaTypes =
|
||
{
|
||
Aca: 0,
|
||
Bx: 1,
|
||
Ca: 2,
|
||
Del1: 3,
|
||
Del2: 4,
|
||
Dt2D: 5,
|
||
Dtr: 6,
|
||
R1: 7,
|
||
R2: 8,
|
||
Ref: 9,
|
||
Si: 10,
|
||
T: 11,
|
||
Text: 12
|
||
};
|
||
/** @enum */
|
||
var c_oSer_DrawingFromToType =
|
||
{
|
||
Col: 0,
|
||
ColOff: 1,
|
||
Row: 2,
|
||
RowOff: 3
|
||
};
|
||
/** @enum */
|
||
var c_oSer_DrawingPosType =
|
||
{
|
||
X: 0,
|
||
Y: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSer_DrawingExtType =
|
||
{
|
||
Cx: 0,
|
||
Cy: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSer_OtherType =
|
||
{
|
||
Media: 0,
|
||
MediaItem: 1,
|
||
MediaId: 2,
|
||
MediaSrc: 3,
|
||
EmbeddedFonts: 4,
|
||
Theme: 5
|
||
};
|
||
/** @enum */
|
||
var c_oSer_CalcChainType =
|
||
{
|
||
CalcChainItem: 0,
|
||
Array: 1,
|
||
SheetId: 2,
|
||
DependencyLevel: 3,
|
||
Ref: 4,
|
||
ChildChain: 5,
|
||
NewThread: 6
|
||
};
|
||
/** @enum */
|
||
var c_oSer_ColorObjectType =
|
||
{
|
||
Rgb: 0,
|
||
Type: 1,
|
||
Theme: 2,
|
||
Tint: 3
|
||
};
|
||
/** @enum */
|
||
var c_oSer_ColorType =
|
||
{
|
||
Auto: 0
|
||
};
|
||
/** @enum */
|
||
var c_oSer_CalcChainType =
|
||
{
|
||
CalcChainItem: 0,
|
||
Array: 1,
|
||
SheetId: 2,
|
||
DependencyLevel: 3,
|
||
Ref: 4,
|
||
ChildChain: 5,
|
||
NewThread: 6
|
||
};
|
||
/** @enum */
|
||
var c_oSer_PageMargins =
|
||
{
|
||
Left: 0,
|
||
Top: 1,
|
||
Right: 2,
|
||
Bottom: 3,
|
||
Header: 4,
|
||
Footer: 5
|
||
};
|
||
/** @enum */
|
||
var c_oSer_PageSetup =
|
||
{
|
||
Orientation: 0,
|
||
PaperSize: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSer_PrintOptions =
|
||
{
|
||
GridLines: 0,
|
||
Headings: 1
|
||
};
|
||
/** @enum */
|
||
var c_oSer_TablePart =
|
||
{
|
||
Table:0,
|
||
Ref:1,
|
||
TotalsRowCount:2,
|
||
DisplayName:3,
|
||
AutoFilter:4,
|
||
SortState:5,
|
||
TableColumns:6,
|
||
TableStyleInfo:7
|
||
};
|
||
/** @enum */
|
||
var c_oSer_TableStyleInfo =
|
||
{
|
||
Name:0,
|
||
ShowColumnStripes:1,
|
||
ShowRowStripes:2,
|
||
ShowFirstColumn:3,
|
||
ShowLastColumn:4
|
||
};
|
||
/** @enum */
|
||
var c_oSer_TableColumns =
|
||
{
|
||
TableColumn:0,
|
||
Name:1,
|
||
DataDxfId:2,
|
||
TotalsRowLabel:3,
|
||
TotalsRowFunction:4,
|
||
TotalsRowFormula:5,
|
||
CalculatedColumnFormula:6
|
||
};
|
||
/** @enum */
|
||
var c_oSer_SortState =
|
||
{
|
||
Ref:0,
|
||
CaseSensitive:1,
|
||
SortConditions:2,
|
||
SortCondition:3,
|
||
ConditionRef:4,
|
||
ConditionSortBy:5,
|
||
ConditionDescending:6,
|
||
ConditionDxfId:7
|
||
};
|
||
/** @enum */
|
||
var c_oSer_AutoFilter =
|
||
{
|
||
Ref:0,
|
||
FilterColumns:1,
|
||
FilterColumn:2,
|
||
SortState:3
|
||
};
|
||
/** @enum */
|
||
var c_oSer_FilterColumn =
|
||
{
|
||
ColId:0,
|
||
Filters:1,
|
||
Filter:2,
|
||
DateGroupItem:3,
|
||
CustomFilters:4,
|
||
ColorFilter:5,
|
||
Top10:6,
|
||
DynamicFilter: 7
|
||
};
|
||
/** @enum */
|
||
var c_oSer_Filter =
|
||
{
|
||
Val:0
|
||
};
|
||
/** @enum */
|
||
var c_oSer_DateGroupItem =
|
||
{
|
||
DateTimeGrouping:0,
|
||
Day:1,
|
||
Hour:2,
|
||
Minute:3,
|
||
Month:4,
|
||
Second:5,
|
||
Year:6
|
||
};
|
||
/** @enum */
|
||
var c_oSer_CustomFilters =
|
||
{
|
||
And:0,
|
||
CustomFilters:1,
|
||
CustomFilter:2,
|
||
Operator:3,
|
||
Val:4
|
||
};
|
||
/** @enum */
|
||
var c_oSer_DynamicFilter =
|
||
{
|
||
Type: 0,
|
||
Val: 1,
|
||
MaxVal: 2
|
||
};
|
||
/** @enum */
|
||
var c_oSer_ColorFilter =
|
||
{
|
||
CellColor:0,
|
||
DxfId:1
|
||
};
|
||
/** @enum */
|
||
var c_oSer_Top10 =
|
||
{
|
||
FilterVal:0,
|
||
Percent:1,
|
||
Top:2,
|
||
Val:3
|
||
};
|
||
/** @enum */
|
||
var c_oSer_Dxf =
|
||
{
|
||
Alignment:0,
|
||
Border:1,
|
||
Fill:2,
|
||
Font:3,
|
||
NumFmt:4
|
||
};
|
||
/** @enum */
|
||
var c_oSer_TableStyles = {
|
||
DefaultTableStyle:0,
|
||
DefaultPivotStyle:1,
|
||
TableStyles: 2,
|
||
TableStyle: 3
|
||
};
|
||
var c_oSer_TableStyle = {
|
||
Name: 0,
|
||
Pivot: 1,
|
||
Table: 2,
|
||
Elements: 3,
|
||
Element: 4
|
||
};
|
||
var c_oSer_TableStyleElement = {
|
||
DxfId: 0,
|
||
Size: 1,
|
||
Type: 2
|
||
};
|
||
var c_oSer_Comments =
|
||
{
|
||
Row: 0,
|
||
Col: 1,
|
||
CommentDatas : 2,
|
||
CommentData : 3,
|
||
Left: 4,
|
||
LeftOffset: 5,
|
||
Top: 6,
|
||
TopOffset: 7,
|
||
Right: 8,
|
||
RightOffset: 9,
|
||
Bottom: 10,
|
||
BottomOffset: 11,
|
||
LeftMM: 12,
|
||
TopMM: 13,
|
||
WidthMM: 14,
|
||
HeightMM: 15,
|
||
MoveWithCells: 16,
|
||
SizeWithCells: 17
|
||
};
|
||
var c_oSer_CommentData =
|
||
{
|
||
Text : 0,
|
||
Time : 1,
|
||
UserId : 2,
|
||
UserName : 3,
|
||
QuoteText : 4,
|
||
Solved : 5,
|
||
Document : 6,
|
||
Replies : 7,
|
||
Reply : 8
|
||
};
|
||
/** @enum */
|
||
var EBorderStyle =
|
||
{
|
||
borderstyleDashDot: 0,
|
||
borderstyleDashDotDot: 1,
|
||
borderstyleDashed: 2,
|
||
borderstyleDotted: 3,
|
||
borderstyleDouble: 4,
|
||
borderstyleHair: 5,
|
||
borderstyleMedium: 6,
|
||
borderstyleMediumDashDot: 7,
|
||
borderstyleMediumDashDotDot: 8,
|
||
borderstyleMediumDashed: 9,
|
||
borderstyleNone: 10,
|
||
borderstyleSlantDashDot: 11,
|
||
borderstyleThick: 12,
|
||
borderstyleThin: 13
|
||
};
|
||
/** @enum */
|
||
var EUnderline =
|
||
{
|
||
underlineDouble: 0,
|
||
underlineDoubleAccounting: 1,
|
||
underlineNone: 2,
|
||
underlineSingle: 3,
|
||
underlineSingleAccounting: 4
|
||
};
|
||
/** @enum */
|
||
var EVerticalAlignRun =
|
||
{
|
||
verticalalignrunBaseline: 0,
|
||
verticalalignrunSubscript: 1,
|
||
verticalalignrunSuperscript: 2
|
||
};
|
||
/** @enum */
|
||
var ECellAnchorType =
|
||
{
|
||
cellanchorAbsolute: 0,
|
||
cellanchorOneCell: 1,
|
||
cellanchorTwoCell: 2
|
||
};
|
||
/** @enum */
|
||
var EVisibleType =
|
||
{
|
||
visibleHidden: 0,
|
||
visibleVeryHidden: 1,
|
||
visibleVisible: 2
|
||
};
|
||
/** @enum */
|
||
var EHorizontalAlignment =
|
||
{
|
||
horizontalalignmentCenter: 0,
|
||
horizontalalignmentcenterContinuous: 1,
|
||
horizontalalignmentDistributed: 2,
|
||
horizontalalignmentFill: 3,
|
||
horizontalalignmentGeneral: 4,
|
||
horizontalalignmentJustify: 5,
|
||
horizontalalignmentLeft: 6,
|
||
horizontalalignmentRight: 7
|
||
};
|
||
/** @enum */
|
||
var EVerticalAlignment =
|
||
{
|
||
verticalalignmentBottom: 0,
|
||
verticalalignmentCenter: 1,
|
||
verticalalignmentDistributed: 2,
|
||
verticalalignmentJustify: 3,
|
||
verticalalignmentTop: 4
|
||
};
|
||
/** @enum */
|
||
var ECellTypeType =
|
||
{
|
||
celltypeBool: 0,
|
||
celltypeDate: 1,
|
||
celltypeError: 2,
|
||
celltypeInlineStr: 3,
|
||
celltypeNumber: 4,
|
||
celltypeSharedString: 5,
|
||
celltypeStr: 6
|
||
};
|
||
/** @enum */
|
||
var ECellFormulaType =
|
||
{
|
||
cellformulatypeArray: 0,
|
||
cellformulatypeDataTable: 1,
|
||
cellformulatypeNormal: 2,
|
||
cellformulatypeShared: 3
|
||
};
|
||
/** @enum */
|
||
var EPageOrientation =
|
||
{
|
||
pageorientLandscape: 0,
|
||
pageorientPortrait: 1
|
||
};
|
||
/** @enum */
|
||
var EPageSize =
|
||
{
|
||
pagesizeLetterPaper: 1,
|
||
pagesizeLetterSmall: 2,
|
||
pagesizeTabloidPaper: 3,
|
||
pagesizeLedgerPaper: 4,
|
||
pagesizeLegalPaper: 5,
|
||
pagesizeStatementPaper: 6,
|
||
pagesizeExecutivePaper: 7,
|
||
pagesizeA3Paper: 8,
|
||
pagesizeA4Paper: 9,
|
||
pagesizeA4SmallPaper: 10,
|
||
pagesizeA5Paper: 11,
|
||
pagesizeB4Paper: 12,
|
||
pagesizeB5Paper: 13,
|
||
pagesizeFolioPaper: 14,
|
||
pagesizeQuartoPaper: 15,
|
||
pagesizeStandardPaper1: 16,
|
||
pagesizeStandardPaper2: 17,
|
||
pagesizeNotePaper: 18,
|
||
pagesize9Envelope: 19,
|
||
pagesize10Envelope: 20,
|
||
pagesize11Envelope: 21,
|
||
pagesize12Envelope: 22,
|
||
pagesize14Envelope: 23,
|
||
pagesizeCPaper: 24,
|
||
pagesizeDPaper: 25,
|
||
pagesizeEPaper: 26,
|
||
pagesizeDLEnvelope: 27,
|
||
pagesizeC5Envelope: 28,
|
||
pagesizeC3Envelope: 29,
|
||
pagesizeC4Envelope: 30,
|
||
pagesizeC6Envelope: 31,
|
||
pagesizeC65Envelope: 32,
|
||
pagesizeB4Envelope: 33,
|
||
pagesizeB5Envelope: 34,
|
||
pagesizeB6Envelope: 35,
|
||
pagesizeItalyEnvelope: 36,
|
||
pagesizeMonarchEnvelope: 37,
|
||
pagesize6_3_4Envelope: 38,
|
||
pagesizeUSStandardFanfold: 39,
|
||
pagesizeGermanStandardFanfold: 40,
|
||
pagesizeGermanLegalFanfold: 41,
|
||
pagesizeISOB4: 42,
|
||
pagesizeJapaneseDoublePostcard: 43,
|
||
pagesizeStandardPaper3: 44,
|
||
pagesizeStandardPaper4: 45,
|
||
pagesizeStandardPaper5: 46,
|
||
pagesizeInviteEnvelope: 47,
|
||
pagesizeLetterExtraPaper: 50,
|
||
pagesizeLegalExtraPaper: 51,
|
||
pagesizeTabloidExtraPaper: 52,
|
||
pagesizeA4ExtraPaper: 53,
|
||
pagesizeLetterTransversePaper: 54,
|
||
pagesizeA4TransversePaper: 55,
|
||
pagesizeLetterExtraTransversePaper: 56,
|
||
pagesizeSuperA_SuperA_A4Paper: 57,
|
||
pagesizeSuperB_SuperB_A3Paper: 58,
|
||
pagesizeLetterPlusPaper: 59,
|
||
pagesizeA4PlusPaper: 60,
|
||
pagesizeA5TransversePaper: 61,
|
||
pagesizeJISB5TransversePaper: 62,
|
||
pagesizeA3ExtraPaper: 63,
|
||
pagesizeA5ExtraPaper: 64,
|
||
pagesizeISOB5ExtraPaper: 65,
|
||
pagesizeA2Paper: 66,
|
||
pagesizeA3TransversePaper: 67,
|
||
pagesizeA3ExtraTransversePaper: 68
|
||
};
|
||
/** @enum */
|
||
var ETotalsRowFunction =
|
||
{
|
||
totalrowfunctionAverage: 1,
|
||
totalrowfunctionCount: 2,
|
||
totalrowfunctionCountNums: 3,
|
||
totalrowfunctionCustom: 4,
|
||
totalrowfunctionMax: 5,
|
||
totalrowfunctionMin: 6,
|
||
totalrowfunctionNone: 7,
|
||
totalrowfunctionStdDev: 8,
|
||
totalrowfunctionSum: 9,
|
||
totalrowfunctionVar: 10
|
||
};
|
||
/** @enum */
|
||
var ESortBy =
|
||
{
|
||
sortbyCellColor: 1,
|
||
sortbyFontColor: 2,
|
||
sortbyIcon: 3,
|
||
sortbyValue: 4
|
||
};
|
||
/** @enum */
|
||
var ECustomFilter =
|
||
{
|
||
customfilterEqual: 1,
|
||
customfilterGreaterThan: 2,
|
||
customfilterGreaterThanOrEqual: 3,
|
||
customfilterLessThan: 4,
|
||
customfilterLessThanOrEqual: 5,
|
||
customfilterNotEqual: 6
|
||
};
|
||
/** @enum */
|
||
var EDateTimeGroup =
|
||
{
|
||
datetimegroupDay: 1,
|
||
datetimegroupHour: 2,
|
||
datetimegroupMinute: 3,
|
||
datetimegroupMonth: 4,
|
||
datetimegroupSecond: 5,
|
||
datetimegroupYear: 6
|
||
};
|
||
/** @enum */
|
||
var ETableStyleType =
|
||
{
|
||
tablestyletypeBlankRow: 0,
|
||
tablestyletypeFirstColumn: 1,
|
||
tablestyletypeFirstColumnStripe: 2,
|
||
tablestyletypeFirstColumnSubheading: 3,
|
||
tablestyletypeFirstHeaderCell: 4,
|
||
tablestyletypeFirstRowStripe: 5,
|
||
tablestyletypeFirstRowSubheading: 6,
|
||
tablestyletypeFirstSubtotalColumn: 7,
|
||
tablestyletypeFirstSubtotalRow: 8,
|
||
tablestyletypeFirstTotalCell: 9,
|
||
tablestyletypeHeaderRow: 10,
|
||
tablestyletypeLastColumn: 11,
|
||
tablestyletypeLastHeaderCell: 12,
|
||
tablestyletypeLastTotalCell: 13,
|
||
tablestyletypePageFieldLabels: 14,
|
||
tablestyletypePageFieldValues: 15,
|
||
tablestyletypeSecondColumnStripe: 16,
|
||
tablestyletypeSecondColumnSubheading: 17,
|
||
tablestyletypeSecondRowStripe: 18,
|
||
tablestyletypeSecondRowSubheading: 19,
|
||
tablestyletypeSecondSubtotalColumn: 20,
|
||
tablestyletypeSecondSubtotalRow: 21,
|
||
tablestyletypeThirdColumnSubheading: 22,
|
||
tablestyletypeThirdRowSubheading: 23,
|
||
tablestyletypeThirdSubtotalColumn: 24,
|
||
tablestyletypeThirdSubtotalRow: 25,
|
||
tablestyletypeTotalRow: 26,
|
||
tablestyletypeWholeTable: 27
|
||
};
|
||
|
||
var DocumentPageSize = new function() {
|
||
this.oSizes = [
|
||
{id:EPageSize.pagesizeLetterPaper, w_mm: 215.9, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeLetterSmall, w_mm: 215.9, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeTabloidPaper, w_mm: 279.4, h_mm: 431.7},
|
||
{id:EPageSize.pagesizeLedgerPaper, w_mm: 431.8, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeLegalPaper, w_mm: 215.9, h_mm: 355.6},
|
||
{id:EPageSize.pagesizeStatementPaper, w_mm: 495.3, h_mm: 215.9},
|
||
{id:EPageSize.pagesizeExecutivePaper, w_mm: 184.2, h_mm: 266.7},
|
||
{id:EPageSize.pagesizeA3Paper, w_mm: 297, h_mm: 420.1},
|
||
{id:EPageSize.pagesizeA4Paper, w_mm: 210, h_mm: 297},
|
||
{id:EPageSize.pagesizeA4SmallPaper, w_mm: 210, h_mm: 297},
|
||
{id:EPageSize.pagesizeA5Paper, w_mm: 148.1, h_mm: 209.9},
|
||
{id:EPageSize.pagesizeB4Paper, w_mm: 250, h_mm: 353},
|
||
{id:EPageSize.pagesizeB5Paper, w_mm: 176, h_mm: 250.1},
|
||
{id:EPageSize.pagesizeFolioPaper, w_mm: 215.9, h_mm: 330.2},
|
||
{id:EPageSize.pagesizeQuartoPaper, w_mm: 215, h_mm: 275},
|
||
{id:EPageSize.pagesizeStandardPaper1, w_mm: 254, h_mm: 355.6},
|
||
{id:EPageSize.pagesizeStandardPaper2, w_mm: 279.4, h_mm: 431.8},
|
||
{id:EPageSize.pagesizeNotePaper, w_mm: 215.9, h_mm: 279.4},
|
||
{id:EPageSize.pagesize9Envelope, w_mm: 98.4, h_mm: 225.4},
|
||
{id:EPageSize.pagesize10Envelope, w_mm: 104.8, h_mm: 241.3},
|
||
{id:EPageSize.pagesize11Envelope, w_mm: 114.3, h_mm: 263.5},
|
||
{id:EPageSize.pagesize12Envelope, w_mm: 120.7, h_mm: 279.4},
|
||
{id:EPageSize.pagesize14Envelope, w_mm: 127, h_mm: 292.1},
|
||
{id:EPageSize.pagesizeCPaper, w_mm: 431.8, h_mm: 558.8},
|
||
{id:EPageSize.pagesizeDPaper, w_mm: 558.8, h_mm: 863.6},
|
||
{id:EPageSize.pagesizeEPaper, w_mm: 863.6, h_mm: 1117.6},
|
||
{id:EPageSize.pagesizeDLEnvelope, w_mm: 110.1, h_mm: 220.1},
|
||
{id:EPageSize.pagesizeC5Envelope, w_mm: 162, h_mm: 229},
|
||
{id:EPageSize.pagesizeC3Envelope, w_mm: 324, h_mm: 458},
|
||
{id:EPageSize.pagesizeC4Envelope, w_mm: 229, h_mm: 324},
|
||
{id:EPageSize.pagesizeC6Envelope, w_mm: 114, h_mm: 162},
|
||
{id:EPageSize.pagesizeC65Envelope, w_mm: 114, h_mm: 229},
|
||
{id:EPageSize.pagesizeB4Envelope, w_mm: 250, h_mm: 353},
|
||
{id:EPageSize.pagesizeB5Envelope, w_mm: 176, h_mm: 250},
|
||
{id:EPageSize.pagesizeB6Envelope, w_mm: 176, h_mm: 125},
|
||
{id:EPageSize.pagesizeItalyEnvelope, w_mm: 110, h_mm: 230},
|
||
{id:EPageSize.pagesizeMonarchEnvelope, w_mm: 98.4, h_mm: 190.5},
|
||
{id:EPageSize.pagesize6_3_4Envelope, w_mm: 92.1, h_mm: 165.1},
|
||
{id:EPageSize.pagesizeUSStandardFanfold, w_mm: 377.8, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeGermanStandardFanfold, w_mm: 215.9, h_mm: 304.8},
|
||
{id:EPageSize.pagesizeGermanLegalFanfold, w_mm: 215.9, h_mm: 330.2},
|
||
{id:EPageSize.pagesizeISOB4, w_mm: 250, h_mm: 353},
|
||
{id:EPageSize.pagesizeJapaneseDoublePostcard, w_mm: 200, h_mm: 148},
|
||
{id:EPageSize.pagesizeStandardPaper3, w_mm: 228.6, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeStandardPaper4, w_mm: 254, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeStandardPaper5, w_mm: 381, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeInviteEnvelope, w_mm: 220, h_mm: 220},
|
||
{id:EPageSize.pagesizeLetterExtraPaper, w_mm: 235.6, h_mm: 304.8},
|
||
{id:EPageSize.pagesizeLegalExtraPaper, w_mm: 235.6, h_mm: 381},
|
||
{id:EPageSize.pagesizeTabloidExtraPaper, w_mm: 296.9, h_mm: 457.2},
|
||
{id:EPageSize.pagesizeA4ExtraPaper, w_mm: 236, h_mm: 322},
|
||
{id:EPageSize.pagesizeLetterTransversePaper, w_mm: 210.2, h_mm: 279.4},
|
||
{id:EPageSize.pagesizeA4TransversePaper, w_mm: 210, h_mm: 297},
|
||
{id:EPageSize.pagesizeLetterExtraTransversePaper, w_mm: 235.6, h_mm: 304.8},
|
||
{id:EPageSize.pagesizeSuperA_SuperA_A4Paper, w_mm: 227, h_mm: 356},
|
||
{id:EPageSize.pagesizeSuperB_SuperB_A3Paper, w_mm: 305, h_mm: 487},
|
||
{id:EPageSize.pagesizeLetterPlusPaper, w_mm: 215.9, h_mm: 12.69},
|
||
{id:EPageSize.pagesizeA4PlusPaper, w_mm: 210, h_mm: 330},
|
||
{id:EPageSize.pagesizeA5TransversePaper, w_mm: 148, h_mm: 210},
|
||
{id:EPageSize.pagesizeJISB5TransversePaper, w_mm: 182, h_mm: 257},
|
||
{id:EPageSize.pagesizeA3ExtraPaper, w_mm: 322, h_mm: 445},
|
||
{id:EPageSize.pagesizeA5ExtraPaper, w_mm: 174, h_mm: 235},
|
||
{id:EPageSize.pagesizeISOB5ExtraPaper, w_mm: 201, h_mm: 276},
|
||
{id:EPageSize.pagesizeA2Paper, w_mm: 420, h_mm: 594},
|
||
{id:EPageSize.pagesizeA3TransversePaper, w_mm: 297, h_mm: 420},
|
||
{id:EPageSize.pagesizeA3ExtraTransversePaper, w_mm: 322, h_mm: 445}
|
||
];
|
||
this.getSizeByWH = function(widthMm, heightMm)
|
||
{
|
||
for( index in this.oSizes)
|
||
{
|
||
var item = this.oSizes[index];
|
||
if(widthMm == item.w_mm && heightMm == item.h_mm)
|
||
return item;
|
||
}
|
||
return this.oSizes[8];//A4
|
||
};
|
||
this.getSizeById = function(id)
|
||
{
|
||
for( index in this.oSizes)
|
||
{
|
||
var item = this.oSizes[index];
|
||
if(id == item.id)
|
||
return item;
|
||
}
|
||
return this.oSizes[8];//A4
|
||
};
|
||
};
|
||
|
||
var map_themeIndex_to_themeObj = {
|
||
0: 8,
|
||
1: 12,
|
||
2: 9,
|
||
3: 13,
|
||
4: 0,
|
||
5: 1,
|
||
6: 2,
|
||
7: 3,
|
||
8: 4,
|
||
9: 5,
|
||
10: 11,
|
||
11: 10
|
||
}
|
||
|
||
function OpenColor()
|
||
{
|
||
this.rgb = null;
|
||
this.auto = null;
|
||
this.theme = null;
|
||
this.tint = null;
|
||
}
|
||
OpenColor.prototype =
|
||
{
|
||
toRgb : function(theme)
|
||
{
|
||
var nRes = 0;
|
||
var r = 0;
|
||
var g = 0;
|
||
var b = 0;
|
||
if(null != this.theme && null != theme)
|
||
{
|
||
var oUniColor = theme.themeElements.clrScheme.colors[map_themeIndex_to_themeObj[this.theme]];
|
||
if(null != oUniColor)
|
||
{
|
||
var rgba = oUniColor.color.RGBA;
|
||
if(null != rgba)
|
||
{
|
||
r = rgba.R;
|
||
g = rgba.G;
|
||
b = rgba.B;
|
||
}
|
||
}
|
||
if(null != this.tint)
|
||
{
|
||
var oCColorModifiers = new CColorModifiers();
|
||
var HSL = {H: 0, S: 0, L: 0};
|
||
oCColorModifiers.RGB2HSL(r, g, b, HSL);
|
||
var L = HSL.L / g_nHSLMaxValue;
|
||
if (this.tint < 0)
|
||
L = L * (1 + this.tint);
|
||
else
|
||
L = L * (1 - this.tint) + (1 - 1 * (1 - this.tint));
|
||
HSL.L = Asc.floor(L * g_nHSLMaxValue);
|
||
var RGB = {R: 0, G: 0, B: 0};
|
||
oCColorModifiers.HSL2RGB(HSL, RGB);
|
||
r = RGB.R;
|
||
g = RGB.G;
|
||
b = RGB.B;
|
||
}
|
||
nRes |= b;
|
||
nRes |= g << 8;
|
||
nRes |= r << 16;
|
||
}
|
||
return nRes;
|
||
}
|
||
}
|
||
|
||
var g_nodeAttributeStart = 0xFA;
|
||
var g_nodeAttributeEnd = 0xFB;
|
||
|
||
/** @constructor */
|
||
function BinaryTableWriter(memory, aDxfs)
|
||
{
|
||
this.memory = memory;
|
||
this.aDxfs = aDxfs;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.Write = function(aTables)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = aTables.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_TablePart.Table, function(){oThis.WriteTable(aTables[i]);});
|
||
}
|
||
this.WriteTable = function(table)
|
||
{
|
||
var oThis = this;
|
||
//Ref
|
||
if(null != table.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TablePart.Ref);
|
||
this.memory.WriteString2(table.Ref);
|
||
}
|
||
//TotalsRowCount
|
||
if(null != table.TotalsRowCount)
|
||
this.bs.WriteItem(c_oSer_TablePart.TotalsRowCount, function(){oThis.memory.WriteLong(table.TotalsRowCount);});
|
||
//Display Name
|
||
if(null != table.DisplayName)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TablePart.DisplayName);
|
||
this.memory.WriteString2(table.DisplayName);
|
||
}
|
||
//AutoFilter
|
||
if(null != table.AutoFilter)
|
||
this.bs.WriteItem(c_oSer_TablePart.AutoFilter, function(){oThis.WriteAutoFilter(table.AutoFilter);});
|
||
//SortState
|
||
if(null != table.SortState)
|
||
this.bs.WriteItem(c_oSer_TablePart.SortState, function(){oThis.WriteSortState(table.SortState);});
|
||
//TableColumns
|
||
if(null != table.TableColumns)
|
||
this.bs.WriteItem(c_oSer_TablePart.TableColumns, function(){oThis.WriteTableColumns(table.TableColumns);});
|
||
//TableStyleInfo
|
||
if(null != table.TableStyleInfo)
|
||
this.bs.WriteItem(c_oSer_TablePart.TableStyleInfo, function(){oThis.WriteTableStyleInfo(table.TableStyleInfo);});
|
||
}
|
||
this.WriteAutoFilter = function(autofilter)
|
||
{
|
||
var oThis = this;
|
||
//Ref
|
||
if(null != autofilter.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSer_AutoFilter.Ref);
|
||
this.memory.WriteString2(autofilter.Ref);
|
||
}
|
||
//FilterColumns
|
||
if(null != autofilter.FilterColumns)
|
||
this.bs.WriteItem(c_oSer_AutoFilter.FilterColumns, function(){oThis.WriteFilterColumns(autofilter.FilterColumns);});
|
||
//SortState
|
||
if(null != autofilter.SortState)
|
||
this.bs.WriteItem(c_oSer_AutoFilter.SortState, function(){oThis.WriteSortState(autofilter.SortState);});
|
||
}
|
||
this.WriteFilterColumns = function(filterColumns)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = filterColumns.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_AutoFilter.FilterColumn, function(){oThis.WriteFilterColumn(filterColumns[i]);});
|
||
}
|
||
this.WriteFilterColumn = function(filterColumn)
|
||
{
|
||
var oThis = this;
|
||
//ColId
|
||
if(null != filterColumn.ColId)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.ColId, function(){oThis.memory.WriteLong(filterColumn.ColId);});
|
||
//Filters
|
||
if(null != filterColumn.Filters)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.Filters, function(){oThis.WriteFilters(filterColumn.Filters);});
|
||
//CustomFilters
|
||
if(null != filterColumn.CustomFiltersObj)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.CustomFilters, function(){oThis.WriteCustomFilters(filterColumn.CustomFiltersObj);});
|
||
//DynamicFilter
|
||
if(null != filterColumn.DynamicFilter)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.DynamicFilter, function(){oThis.WriteDynamicFilter(filterColumn.DynamicFilter);});
|
||
//ColorFilter
|
||
if(null != filterColumn.ColorFilter)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.ColorFilter, function(){oThis.WriteColorFilter(filterColumn.ColorFilter);});
|
||
//Top10
|
||
if(null != filterColumn.Top10)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.Top10, function(){oThis.WriteTop10(filterColumn.Top10);});
|
||
}
|
||
this.WriteFilters = function(filters)
|
||
{
|
||
var oThis = this;
|
||
if(null != filters.Values)
|
||
{
|
||
for(var i = 0, length = filters.Values.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.Filter, function(){oThis.WriteFilter(filters.Values[i]);});
|
||
}
|
||
if(null != filters.Dates)
|
||
{
|
||
for(var i = 0, length = filters.Dates.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_FilterColumn.DateGroupItem, function(){oThis.WriteDateGroupItem(filters.Dates[i]);});
|
||
}
|
||
}
|
||
this.WriteFilter = function(val)
|
||
{
|
||
var oThis = this;
|
||
if(null != val)
|
||
{
|
||
this.memory.WriteByte(c_oSer_Filter.Val);
|
||
this.memory.WriteString2(val);
|
||
}
|
||
}
|
||
this.WriteDateGroupItem = function(dateGroupItem)
|
||
{
|
||
var oThis = this;
|
||
if(null != dateGroupItem.DateTimeGrouping)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.DateTimeGrouping);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(dateGroupItem.DateTimeGrouping);
|
||
}
|
||
if(null != dateGroupItem.Day)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Day);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Day);
|
||
}
|
||
if(null != dateGroupItem.Hour)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Hour);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Hour);
|
||
}
|
||
if(null != dateGroupItem.Minute)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Minute);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Minute);
|
||
}
|
||
if(null != dateGroupItem.Month)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Month);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Month);
|
||
}
|
||
if(null != dateGroupItem.Second)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Second);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Second);
|
||
}
|
||
if(null != dateGroupItem.Year)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DateGroupItem.Year);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(dateGroupItem.Year);
|
||
}
|
||
}
|
||
this.WriteCustomFilters = function(customFilters)
|
||
{
|
||
var oThis = this;
|
||
if(null != customFilters.And)
|
||
this.bs.WriteItem(c_oSer_CustomFilters.And, function(){oThis.memory.WriteBool(customFilters.And);});
|
||
if(null != customFilters.CustomFilters && customFilters.CustomFilters.length > 0)
|
||
this.bs.WriteItem(c_oSer_CustomFilters.CustomFilters, function(){oThis.WriteCustomFiltersItems(customFilters.CustomFilters);});
|
||
}
|
||
this.WriteCustomFiltersItems = function(aCustomFilters)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = aCustomFilters.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_CustomFilters.CustomFilter, function(){oThis.WriteCustomFiltersItem(aCustomFilters[i]);});
|
||
}
|
||
this.WriteCustomFiltersItem = function(customFilter)
|
||
{
|
||
var oThis = this;
|
||
if(null != customFilter.Operator)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CustomFilters.Operator);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(customFilter.Operator);
|
||
}
|
||
if(null != customFilter.Val)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CustomFilters.Val);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(customFilter.Val);
|
||
}
|
||
}
|
||
this.WriteDynamicFilter = function(dynamicFilter)
|
||
{
|
||
var oThis = this;
|
||
if(null != dynamicFilter.Type)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DynamicFilter.Type);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(dynamicFilter.Type);
|
||
}
|
||
if(null != dynamicFilter.Val)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DynamicFilter.Val);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dynamicFilter.Val);
|
||
}
|
||
if(null != dynamicFilter.MaxVal)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DynamicFilter.MaxVal);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dynamicFilter.MaxVal);
|
||
}
|
||
}
|
||
this.WriteColorFilter = function(colorFilter)
|
||
{
|
||
var oThis = this;
|
||
if(null != colorFilter.CellColor)
|
||
{
|
||
this.memory.WriteByte(c_oSer_ColorFilter.CellColor);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(colorFilter.CellColor);
|
||
}
|
||
if(null != colorFilter.dxf)
|
||
{
|
||
this.memory.WriteByte(c_oSer_ColorFilter.DxfId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(this.aDxfs.length);
|
||
this.aDxfs.push(colorFilter.dxf);
|
||
}
|
||
}
|
||
this.WriteTop10 = function(top10)
|
||
{
|
||
var oThis = this;
|
||
if(null != top10.FilterVal)
|
||
{
|
||
this.memory.WriteByte(c_oSer_Top10.FilterVal);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(top10.FilterVal);
|
||
}
|
||
if(null != top10.Percent)
|
||
{
|
||
this.memory.WriteByte(c_oSer_Top10.Percent);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(top10.Percent);
|
||
}
|
||
if(null != top10.Top)
|
||
{
|
||
this.memory.WriteByte(c_oSer_Top10.Top);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(top10.Top);
|
||
}
|
||
if(null != top10.Val)
|
||
{
|
||
this.memory.WriteByte(c_oSer_Top10.Val);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(top10.Val);
|
||
}
|
||
}
|
||
this.WriteSortState = function(sortState)
|
||
{
|
||
var oThis = this;
|
||
if(null != sortState.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSer_SortState.Ref);
|
||
this.memory.WriteString2(sortState.Ref);
|
||
}
|
||
if(null != sortState.CaseSensitive)
|
||
this.bs.WriteItem(c_oSer_SortState.CaseSensitive, function(){oThis.memory.WriteBool(sortState.CaseSensitive);});
|
||
if(null != sortState.SortConditions)
|
||
this.bs.WriteItem(c_oSer_SortState.SortConditions, function(){oThis.WriteSortConditions(sortState.SortConditions);});
|
||
}
|
||
this.WriteSortConditions = function(sortConditions)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = sortConditions.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_SortState.SortCondition, function(){oThis.WriteSortCondition(sortConditions[i]);});
|
||
}
|
||
this.WriteSortCondition = function(sortCondition)
|
||
{
|
||
var oThis = this;
|
||
if(null != sortCondition.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSer_SortState.ConditionRef);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(sortCondition.Ref);
|
||
}
|
||
if(null != sortCondition.ConditionSortBy)
|
||
{
|
||
this.memory.WriteByte(c_oSer_SortState.ConditionSortBy);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(sortCondition.ConditionSortBy);
|
||
}
|
||
if(null != sortCondition.ConditionDescending)
|
||
{
|
||
this.memory.WriteByte(c_oSer_SortState.ConditionDescending);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(sortCondition.ConditionDescending);
|
||
}
|
||
if(null != sortCondition.dxf)
|
||
{
|
||
this.memory.WriteByte(c_oSer_SortState.ConditionDxfId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(this.aDxfs.length);
|
||
this.aDxfs.push(sortCondition.dxf);
|
||
}
|
||
}
|
||
this.WriteTableColumns = function(tableColumns)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = tableColumns.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSer_TableColumns.TableColumn, function(){oThis.WriteTableColumn(tableColumns[i]);});
|
||
}
|
||
this.WriteTableColumn = function(tableColumn)
|
||
{
|
||
var oThis = this;
|
||
if(null != tableColumn.Name)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableColumns.Name);
|
||
this.memory.WriteString2(tableColumn.Name);
|
||
}
|
||
if(null != tableColumn.TotalsRowLabel)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableColumns.TotalsRowLabel);
|
||
this.memory.WriteString2(tableColumn.TotalsRowLabel);
|
||
}
|
||
if(null != tableColumn.TotalsRowFunction)
|
||
this.bs.WriteItem(c_oSer_TableColumns.TotalsRowFunction, function(){oThis.memory.WriteByte(tableColumn.TotalsRowFunction);});
|
||
|
||
if(null != tableColumn.TotalsRowFormula)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableColumns.TotalsRowFormula);
|
||
this.memory.WriteString2(tableColumn.TotalsRowFormula);
|
||
}
|
||
if(null != tableColumn.dxf)
|
||
{
|
||
this.bs.WriteItem(c_oSer_TableColumns.DataDxfId, function(){oThis.memory.WriteLong(oThis.aDxfs.length);});
|
||
this.aDxfs.push(tableColumn.dxf);
|
||
}
|
||
if(null != tableColumn.CalculatedColumnFormula)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableColumns.CalculatedColumnFormula);
|
||
this.memory.WriteString2(tableColumn.CalculatedColumnFormula);
|
||
}
|
||
}
|
||
this.WriteTableStyleInfo = function(tableStyleInfo)
|
||
{
|
||
var oThis = this;
|
||
if(null != tableStyleInfo.Name)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleInfo.Name);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(tableStyleInfo.Name);
|
||
}
|
||
if(null != tableStyleInfo.ShowColumnStripes)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleInfo.ShowColumnStripes);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(tableStyleInfo.ShowColumnStripes);
|
||
}
|
||
if(null != tableStyleInfo.ShowRowStripes)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleInfo.ShowRowStripes);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(tableStyleInfo.ShowRowStripes);
|
||
}
|
||
if(null != tableStyleInfo.ShowFirstColumn)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleInfo.ShowFirstColumn);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(tableStyleInfo.ShowFirstColumn);
|
||
}
|
||
if(null != tableStyleInfo.ShowLastColumn)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleInfo.ShowLastColumn);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(tableStyleInfo.ShowLastColumn);
|
||
}
|
||
}
|
||
}
|
||
/** @constructor */
|
||
function BinarySharedStringsTableWriter(memory, oSharedStrings)
|
||
{
|
||
this.memory = memory;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.bsw = new BinaryStylesTableWriter(this.memory);
|
||
this.oSharedStrings = oSharedStrings;
|
||
this.Write = function()
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteSharedStringsContent();});
|
||
};
|
||
this.WriteSharedStringsContent = function()
|
||
{
|
||
var oThis = this;
|
||
var aSharedStrings = new Array();
|
||
for(var i in this.oSharedStrings.strings)
|
||
{
|
||
var item = this.oSharedStrings.strings[i];
|
||
if(null != item.t)
|
||
aSharedStrings[item.t.id] = {t: item.t.val};
|
||
if(null != item.a)
|
||
{
|
||
for(var j = 0, length2 = item.a.length; j < length2; ++j)
|
||
{
|
||
var oCurText = item.a[j];
|
||
aSharedStrings[oCurText.id] = {a: oCurText.val};
|
||
}
|
||
}
|
||
}
|
||
for(var i = 0, length = aSharedStrings.length; i < length; ++i)
|
||
{
|
||
var si = aSharedStrings[i];
|
||
if(null != si)
|
||
this.bs.WriteItem(c_oSerSharedStringTypes.Si, function(){oThis.WriteSi(si);});
|
||
}
|
||
};
|
||
this.WriteSi = function(si)
|
||
{
|
||
var oThis = this;
|
||
if(null != si.t)
|
||
{
|
||
this.memory.WriteByte(c_oSerSharedStringTypes.Text);
|
||
this.memory.WriteString2(si.t);
|
||
}
|
||
else if(null != si.a)
|
||
{
|
||
for(var i = 0, length = si.a.length; i < length; ++i)
|
||
{
|
||
var run = si.a[i];
|
||
this.bs.WriteItem(c_oSerSharedStringTypes.Run, function(){oThis.WriteRun(run);});
|
||
}
|
||
}
|
||
};
|
||
this.WriteRun = function(run)
|
||
{
|
||
var oThis = this;
|
||
if(null != run.format)
|
||
this.bs.WriteItem(c_oSerSharedStringTypes.RPr, function(){oThis.bsw.WriteFont(run.format);});
|
||
if(null != run.text)
|
||
{
|
||
this.memory.WriteByte(c_oSerSharedStringTypes.Text);
|
||
this.memory.WriteString2(run.text);
|
||
}
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function BinaryStylesTableWriter(memory, wb, oBinaryWorksheetsTableWriter)
|
||
{
|
||
this.memory = memory;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.wb = wb;
|
||
this.aDxfs = null;
|
||
this.oXfsMap = null;
|
||
this.oFontMap = null;
|
||
this.oFillMap = null;
|
||
this.oBorderMap = null;
|
||
this.oNumMap = null;
|
||
if(null != oBinaryWorksheetsTableWriter)
|
||
{
|
||
this.aDxfs = oBinaryWorksheetsTableWriter.aDxfs;
|
||
this.oXfsMap = oBinaryWorksheetsTableWriter.oXfsMap;
|
||
this.oFontMap = oBinaryWorksheetsTableWriter.oFontMap;
|
||
this.oFillMap = oBinaryWorksheetsTableWriter.oFillMap;
|
||
this.oBorderMap = oBinaryWorksheetsTableWriter.oBorderMap;
|
||
this.oNumMap = oBinaryWorksheetsTableWriter.oNumMap;
|
||
}
|
||
this.Write = function()
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteStylesContent();});
|
||
};
|
||
this.WriteStylesContent = function()
|
||
{
|
||
var oThis = this;
|
||
//borders
|
||
this.bs.WriteItem(c_oSerStylesTypes.Borders, function(){oThis.WriteBorders();});
|
||
//fills
|
||
this.bs.WriteItem(c_oSerStylesTypes.Fills, function(){oThis.WriteFills();});
|
||
//fonts
|
||
this.bs.WriteItem(c_oSerStylesTypes.Fonts, function(){oThis.WriteFonts();});
|
||
//numfmts
|
||
this.bs.WriteItem(c_oSerStylesTypes.NumFmts, function(){oThis.WriteNumFmts();});
|
||
//cellxfs
|
||
this.bs.WriteItem(c_oSerStylesTypes.CellXfs, function(){oThis.WriteCellXfs();});
|
||
|
||
var wb = this.wb;
|
||
if(null != wb.TableStyles)
|
||
this.bs.WriteItem(c_oSerStylesTypes.TableStyles, function(){oThis.WriteTableStyles(wb.TableStyles);});
|
||
|
||
if(null != this.aDxfs && this.aDxfs.length > 0)
|
||
this.bs.WriteItem(c_oSerStylesTypes.Dxfs, function(){oThis.WriteDxfs(oThis.aDxfs);});
|
||
};
|
||
this.WriteBorders = function()
|
||
{
|
||
var oThis = this;
|
||
var aBorders = new Array();
|
||
for(var i in this.oBorderMap)
|
||
{
|
||
var elem = this.oBorderMap[i];
|
||
aBorders[elem.index] = elem.val;
|
||
}
|
||
for(var i = 0, length = aBorders.length; i < length; ++i)
|
||
{
|
||
var border = aBorders[i];
|
||
this.bs.WriteItem(c_oSerStylesTypes.Border, function(){oThis.WriteBorder(border.getDif(g_oDefaultBorderAbs));});
|
||
}
|
||
};
|
||
this.WriteBorder = function(border)
|
||
{
|
||
if(null == border)
|
||
return;
|
||
var oThis = this;
|
||
//Bottom
|
||
if(null != border.b)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Bottom, function(){oThis.WriteBorderProp(border.b);});
|
||
//Diagonal
|
||
if(null != border.d)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Diagonal, function(){oThis.WriteBorderProp(border.d);});
|
||
//End
|
||
if(null != border.r)
|
||
this.bs.WriteItem(c_oSerBorderTypes.End, function(){oThis.WriteBorderProp(border.r);});
|
||
//Horizontal
|
||
if(null != border.h)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Horizontal, function(){oThis.WriteBorderProp(border.h);});
|
||
//Start
|
||
if(null != border.l)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Start, function(){oThis.WriteBorderProp(border.l);});
|
||
//Top
|
||
if(null != border.t)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Top, function(){oThis.WriteBorderProp(border.t);});
|
||
//Vertical
|
||
if(null != border.v)
|
||
this.bs.WriteItem(c_oSerBorderTypes.Vertical, function(){oThis.WriteBorderProp(border.v);});
|
||
//DiagonalDown
|
||
if(null != border.dd)
|
||
this.bs.WriteItem(c_oSerBorderTypes.DiagonalDown, function(){oThis.memory.WriteBool(border.dd);});
|
||
//DiagonalUp
|
||
if(null != border.du)
|
||
this.bs.WriteItem(c_oSerBorderTypes.DiagonalUp, function(){oThis.memory.WriteBool(border.du);});
|
||
};
|
||
this.WriteBorderProp = function(borderProp)
|
||
{
|
||
var oThis = this;
|
||
if(null != borderProp.c)
|
||
{
|
||
this.memory.WriteByte(c_oSerBorderPropTypes.Color);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.bs.WriteItemWithLength(function(){oThis.bs.WriteColorSpreadsheet(borderProp.c);});
|
||
}
|
||
if(null != borderProp.s)
|
||
{
|
||
var nStyle = EBorderStyle.borderstyleNone;
|
||
switch(borderProp.s)
|
||
{
|
||
case "dashDot":nStyle = EBorderStyle.borderstyleDashDot;break;
|
||
case "dashDotDot":nStyle = EBorderStyle.borderstyleDashDotDot;break;
|
||
case "dashed":nStyle = EBorderStyle.borderstyleDashed;break;
|
||
case "dotted":nStyle = EBorderStyle.borderstyleDotted;break;
|
||
case "double":nStyle = EBorderStyle.borderstyleDouble;break;
|
||
case "hair":nStyle = EBorderStyle.borderstyleHair;break;
|
||
case "medium":nStyle = EBorderStyle.borderstyleMedium;break;
|
||
case "mediumDashDot":nStyle = EBorderStyle.borderstyleMediumDashDot;break;
|
||
case "mediumDashDotDot":nStyle = EBorderStyle.borderstyleMediumDashDotDot;break;
|
||
case "mediumDashed":nStyle = EBorderStyle.borderstyleMediumDashed;break;
|
||
case "none":nStyle = EBorderStyle.borderstyleNone;break;
|
||
case "slantDashDot":nStyle = EBorderStyle.borderstyleSlantDashDot;break;
|
||
case "thick":nStyle = EBorderStyle.borderstyleThick;break;
|
||
case "thin":nStyle = EBorderStyle.borderstyleThin;break;
|
||
}
|
||
this.memory.WriteByte(c_oSerBorderPropTypes.Style);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(nStyle);
|
||
}
|
||
};
|
||
this.WriteFills = function()
|
||
{
|
||
var oThis = this;
|
||
var aFills = new Array();
|
||
for(var i in this.oFillMap)
|
||
{
|
||
var elem = this.oFillMap[i];
|
||
aFills[elem.index] = elem.val;
|
||
}
|
||
aFills[1] = aFills[0];
|
||
for(var i = 0, length = aFills.length; i < length; ++i)
|
||
{
|
||
var fill = aFills[i];
|
||
this.bs.WriteItem(c_oSerStylesTypes.Fill, function(){oThis.WriteFill(fill);});
|
||
}
|
||
};
|
||
this.WriteFill = function(fill)
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItem(c_oSerFillTypes.PatternFill, function(){oThis.WritePatternFill(fill);});
|
||
};
|
||
this.WritePatternFill = function(fill)
|
||
{
|
||
var oThis = this;
|
||
if(null != fill.bg)
|
||
this.bs.WriteItem(c_oSerFillTypes.PatternFillBgColor, function(){oThis.bs.WriteColorSpreadsheet(fill.bg);});
|
||
};
|
||
this.WriteFonts = function()
|
||
{
|
||
var oThis = this;
|
||
var aFonts = new Array();
|
||
for(var i in this.oFontMap)
|
||
{
|
||
var elem = this.oFontMap[i];
|
||
aFonts[elem.index] = elem.val;
|
||
}
|
||
for(var i = 0, length = aFonts.length; i < length; ++i)
|
||
{
|
||
var font = aFonts[i];
|
||
var fontMinimized = font.getDif(g_oDefaultFontAbs);
|
||
if(null == fontMinimized)
|
||
fontMinimized = new Font();
|
||
if(null == fontMinimized.fn)
|
||
fontMinimized.fn = g_oDefaultFontAbs.fn;
|
||
if(null == fontMinimized.fs)
|
||
fontMinimized.fs = g_oDefaultFontAbs.fs;
|
||
if(null == fontMinimized.c)
|
||
fontMinimized.c = g_oDefaultFontAbs.c;
|
||
this.bs.WriteItem(c_oSerStylesTypes.Font, function(){oThis.WriteFont(fontMinimized);});
|
||
}
|
||
};
|
||
this.WriteFont = function(font)
|
||
{
|
||
var oThis = this;
|
||
if(null != font.b)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.Bold);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(font.b);
|
||
}
|
||
if(null != font.c)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.Color);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.bs.WriteItemWithLength(function(){oThis.bs.WriteColorSpreadsheet(font.c);});
|
||
}
|
||
if(null != font.i)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.Italic);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(font.i);
|
||
}
|
||
if(null != font.fn)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.RFont);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(font.fn);
|
||
}
|
||
if(null != font.s)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.Strike);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(font.s);
|
||
}
|
||
if(null != font.fs)
|
||
{
|
||
this.memory.WriteByte(c_oSerFontTypes.Sz);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
//tood write double
|
||
this.memory.WriteDouble2(font.fs);
|
||
}
|
||
if(null != font.u)
|
||
{
|
||
var nUnderline = EUnderline.underlineNone;
|
||
switch(font.u)
|
||
{
|
||
case "double": nUnderline = EUnderline.underlineDouble;break;
|
||
case "doubleAccounting": nUnderline = EUnderline.underlineDoubleAccounting;break;
|
||
case "none": nUnderline = EUnderline.underlineNone;break;
|
||
case "single": nUnderline = EUnderline.underlineSingle;break;
|
||
case "singleAccounting": nUnderline = EUnderline.underlineSingleAccounting;break;
|
||
}
|
||
this.memory.WriteByte(c_oSerFontTypes.Underline);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(nUnderline);
|
||
}
|
||
if(null != font.va)
|
||
{
|
||
var nVertAlign = EVerticalAlignRun.verticalalignrunBaseline;
|
||
switch(font.va)
|
||
{
|
||
case "baseline": nVertAlign = EVerticalAlignRun.verticalalignrunBaseline;break;
|
||
case "subscript": nVertAlign = EVerticalAlignRun.verticalalignrunSubscript;break;
|
||
case "superscript": nVertAlign = EVerticalAlignRun.verticalalignrunSuperscript;break;
|
||
}
|
||
this.memory.WriteByte(c_oSerFontTypes.VertAlign);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(nVertAlign);
|
||
}
|
||
};
|
||
this.WriteNumFmts = function()
|
||
{
|
||
var oThis = this;
|
||
var index = 0;
|
||
var aNums = new Array();
|
||
for(var i in this.oNumMap)
|
||
{
|
||
var num = this.oNumMap[i];
|
||
if(false == num.val.isEqual(g_oDefaultNumAbs))
|
||
this.bs.WriteItem(c_oSerStylesTypes.NumFmt, function(){oThis.WriteNum({id: num.index, f: num.val.f});});
|
||
}
|
||
};
|
||
this.WriteNum = function(num)
|
||
{
|
||
if(null != num.f)
|
||
{
|
||
this.memory.WriteByte(c_oSerNumFmtTypes.FormatCode);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(num.f);
|
||
}
|
||
if(null != num.id)
|
||
{
|
||
this.memory.WriteByte(c_oSerNumFmtTypes.NumFmtId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(num.id);
|
||
}
|
||
};
|
||
this.WriteCellXfs = function()
|
||
{
|
||
var oThis = this;
|
||
var aXfs = new Array();
|
||
for(var i in this.oXfsMap)
|
||
{
|
||
var elem = this.oXfsMap[i];
|
||
aXfs[elem.index] = elem.val;
|
||
}
|
||
for(var i = 0, length = aXfs.length; i < length; ++i)
|
||
{
|
||
var cellxfs = aXfs[i];
|
||
this.bs.WriteItem(c_oSerStylesTypes.Xfs, function(){oThis.WriteXfs(cellxfs);});
|
||
}
|
||
};
|
||
this.WriteXfs = function(xfs)
|
||
{
|
||
var oThis = this;
|
||
if(null != xfs.borderid)
|
||
{
|
||
if(0 != xfs.borderid)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.ApplyBorder);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(true);
|
||
}
|
||
this.memory.WriteByte(c_oSerXfsTypes.BorderId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(xfs.borderid);
|
||
}
|
||
if(null != xfs.fillid)
|
||
{
|
||
if(0 != xfs.fillid)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.ApplyFill);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(true);
|
||
}
|
||
this.memory.WriteByte(c_oSerXfsTypes.FillId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(xfs.fillid);
|
||
}
|
||
if(null != xfs.fontid)
|
||
{
|
||
if(0 != xfs.fontid)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.ApplyFont);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(true);
|
||
}
|
||
this.memory.WriteByte(c_oSerXfsTypes.FontId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(xfs.fontid);
|
||
}
|
||
if(null != xfs.numid)
|
||
{
|
||
if(0 != xfs.numid)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.ApplyNumberFormat);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(true);
|
||
}
|
||
this.memory.WriteByte(c_oSerXfsTypes.NumFmtId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(xfs.numid);
|
||
}
|
||
if(null != xfs.align)
|
||
{
|
||
var alignMinimized = xfs.align.getDif(g_oDefaultAlignAbs);
|
||
if(null != alignMinimized)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.ApplyAlignment);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(true);
|
||
|
||
this.memory.WriteByte(c_oSerXfsTypes.Aligment);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteAlign(alignMinimized);});
|
||
}
|
||
}
|
||
if(null != xfs.QuotePrefix)
|
||
{
|
||
this.memory.WriteByte(c_oSerXfsTypes.QuotePrefix);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(xfs.QuotePrefix);
|
||
}
|
||
};
|
||
this.WriteAlign = function(align)
|
||
{
|
||
if(null != align.hor)
|
||
{
|
||
var nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentGeneral;
|
||
switch(align.hor)
|
||
{
|
||
case "center" : nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentCenter;break;
|
||
case "justify" : nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentJustify;break;
|
||
case "none" : nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentGeneral;break;
|
||
case "left" : nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentLeft;break;
|
||
case "right" : nHorizontalAlignment = EHorizontalAlignment.horizontalalignmentRight;break;
|
||
}
|
||
this.memory.WriteByte(c_oSerAligmentTypes.Horizontal);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(nHorizontalAlignment);
|
||
}
|
||
if(null != align.indent)
|
||
{
|
||
this.memory.WriteByte(c_oSerAligmentTypes.Indent);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(align.indent);
|
||
}
|
||
if(null != align.RelativeIndent)
|
||
{
|
||
this.memory.WriteByte(c_oSerAligmentTypes.RelativeIndent);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(align.RelativeIndent);
|
||
}
|
||
if(null != align.shrink)
|
||
{
|
||
this.memory.WriteByte(c_oSerAligmentTypes.ShrinkToFit);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(align.shrink);
|
||
}
|
||
if(null != align.angle)
|
||
{
|
||
this.memory.WriteByte(c_oSerAligmentTypes.TextRotation);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(align.angle);
|
||
}
|
||
if(null != align.ver)
|
||
{
|
||
var nVerticalAlignment = EHorizontalAlignment.horizontalalignmentGeneral;
|
||
switch(align.ver)
|
||
{
|
||
case "bottom" : nVerticalAlignment = EVerticalAlignment.verticalalignmentBottom;break;
|
||
case "center" : nVerticalAlignment = EVerticalAlignment.verticalalignmentCenter;break;
|
||
case "distributed" : nVerticalAlignment = EVerticalAlignment.verticalalignmentDistributed;break;
|
||
case "justify" : nVerticalAlignment = EVerticalAlignment.verticalalignmentJustify;break;
|
||
case "top" : nVerticalAlignment = EVerticalAlignment.verticalalignmentTop;break;
|
||
}
|
||
this.memory.WriteByte(c_oSerAligmentTypes.Vertical);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(nVerticalAlignment);
|
||
}
|
||
if(null != align.wrap)
|
||
{
|
||
this.memory.WriteByte(c_oSerAligmentTypes.WrapText);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(align.wrap);
|
||
}
|
||
};
|
||
this.WriteDxfs = function(Dxfs)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = Dxfs.length; i < length; ++i)
|
||
this.bs.WriteItem(c_oSerStylesTypes.Dxf, function(){oThis.WriteDxf(Dxfs[i]);});
|
||
}
|
||
this.WriteDxf = function(Dxf)
|
||
{
|
||
var oThis = this;
|
||
if(null != Dxf.align)
|
||
this.bs.WriteItem(c_oSer_Dxf.Alignment, function(){oThis.WriteAlign(Dxf.align);});
|
||
if(null != Dxf.border)
|
||
this.bs.WriteItem(c_oSer_Dxf.Border, function(){oThis.WriteBorder(Dxf.border);});
|
||
if(null != Dxf.fill)
|
||
this.bs.WriteItem(c_oSer_Dxf.Fill, function(){oThis.WriteFill(Dxf.fill);});
|
||
if(null != Dxf.font)
|
||
this.bs.WriteItem(c_oSer_Dxf.Font, function(){oThis.WriteFont(Dxf.font);});
|
||
if(null != Dxf.numFmt)
|
||
this.bs.WriteItem(c_oSer_Dxf.NumFmt, function(){oThis.WriteNum(Dxf.numFmt);});
|
||
}
|
||
this.WriteTableStyles = function(tableStyles)
|
||
{
|
||
var oThis = this;
|
||
if(null != tableStyles.DefaultTableStyle)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyles.DefaultTableStyle);
|
||
this.memory.WriteString2(tableStyles.DefaultTableStyle);
|
||
}
|
||
if(null != tableStyles.DefaultPivotStyle)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyles.DefaultPivotStyle);
|
||
this.memory.WriteString2(tableStyles.DefaultPivotStyle);
|
||
}
|
||
var bEmptyCustom = true;
|
||
for(var i in tableStyles.CustomStyles)
|
||
{
|
||
bEmptyCustom = false;
|
||
break;
|
||
}
|
||
if(false == bEmptyCustom)
|
||
{
|
||
this.bs.WriteItem(c_oSer_TableStyles.TableStyles, function(){oThis.WriteTableCustomStyles(tableStyles.CustomStyles);});
|
||
}
|
||
}
|
||
this.WriteTableCustomStyles = function(customStyles)
|
||
{
|
||
var oThis = this;
|
||
for(var i in customStyles)
|
||
{
|
||
var style = customStyles[i];
|
||
this.bs.WriteItem(c_oSer_TableStyles.TableStyle, function(){oThis.WriteTableCustomStyle(style);});
|
||
}
|
||
}
|
||
this.WriteTableCustomStyle = function(customStyle)
|
||
{
|
||
var oThis = this;
|
||
if(null != customStyle.name)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyle.Name);
|
||
this.memory.WriteString2(customStyle.name);
|
||
}
|
||
if(null != customStyle.pivot)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Pivot, function(){oThis.memory.WriteBool(customStyle.pivot);});
|
||
if(null != customStyle.table)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Table, function(){oThis.memory.WriteBool(customStyle.table);});
|
||
|
||
this.bs.WriteItem(c_oSer_TableStyle.Elements, function(){oThis.WriteTableCustomStyleElements(customStyle);});
|
||
}
|
||
this.WriteTableCustomStyleElements = function(customStyle)
|
||
{
|
||
var oThis = this;
|
||
if(null != customStyle.blankRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeBlankRow, customStyle.blankRow);});
|
||
if(null != customStyle.firstColumn)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstColumn, customStyle.firstColumn);});
|
||
if(null != customStyle.firstColumnStripe)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstColumnStripe, customStyle.firstColumnStripe);});
|
||
if(null != customStyle.firstColumnSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstColumnSubheading, customStyle.firstColumnSubheading);});
|
||
if(null != customStyle.firstHeaderCell)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstHeaderCell, customStyle.firstHeaderCell);});
|
||
if(null != customStyle.firstRowStripe)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstRowStripe, customStyle.firstRowStripe);});
|
||
if(null != customStyle.firstRowSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstRowSubheading, customStyle.firstRowSubheading);});
|
||
if(null != customStyle.firstSubtotalColumn)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstSubtotalColumn, customStyle.firstSubtotalColumn);});
|
||
if(null != customStyle.firstSubtotalRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstSubtotalRow, customStyle.firstSubtotalRow);});
|
||
if(null != customStyle.firstTotalCell)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeFirstTotalCell, customStyle.firstTotalCell);});
|
||
if(null != customStyle.headerRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeHeaderRow, customStyle.headerRow);});
|
||
if(null != customStyle.lastColumn)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeLastColumn, customStyle.lastColumn);});
|
||
if(null != customStyle.lastHeaderCell)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeLastHeaderCell, customStyle.lastHeaderCell);});
|
||
if(null != customStyle.lastTotalCell)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeLastTotalCell, customStyle.lastTotalCell);});
|
||
if(null != customStyle.pageFieldLabels)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypePageFieldLabels, customStyle.pageFieldLabels);});
|
||
if(null != customStyle.pageFieldValues)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypePageFieldValues, customStyle.pageFieldValues);});
|
||
if(null != customStyle.secondColumnStripe)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondColumnStripe, customStyle.secondColumnStripe);});
|
||
if(null != customStyle.secondColumnSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondColumnSubheading, customStyle.secondColumnSubheading);});
|
||
if(null != customStyle.secondRowStripe)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondRowStripe, customStyle.secondRowStripe);});
|
||
if(null != customStyle.secondRowSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondRowSubheading, customStyle.secondRowSubheading);});
|
||
if(null != customStyle.secondSubtotalColumn)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondSubtotalColumn, customStyle.secondSubtotalColumn);});
|
||
if(null != customStyle.secondSubtotalRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeSecondSubtotalRow, customStyle.secondSubtotalRow);});
|
||
if(null != customStyle.thirdColumnSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeThirdColumnSubheading, customStyle.thirdColumnSubheading);});
|
||
if(null != customStyle.thirdRowSubheading)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeThirdRowSubheading, customStyle.thirdRowSubheading);});
|
||
if(null != customStyle.thirdSubtotalColumn)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeThirdSubtotalColumn, customStyle.thirdSubtotalColumn);});
|
||
if(null != customStyle.thirdSubtotalRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeThirdSubtotalRow, customStyle.thirdSubtotalRow);});
|
||
if(null != customStyle.totalRow)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeTotalRow, customStyle.totalRow);});
|
||
if(null != customStyle.wholeTable)
|
||
this.bs.WriteItem(c_oSer_TableStyle.Element, function(){oThis.WriteTableCustomStyleElement(ETableStyleType.tablestyletypeWholeTable, customStyle.wholeTable);});
|
||
}
|
||
this.WriteTableCustomStyleElement = function(type, customElement)
|
||
{
|
||
if(null != type)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleElement.Type);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(type);
|
||
}
|
||
if(null != customElement.size)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleElement.Size);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(customElement.size);
|
||
}
|
||
if(null != customElement.dxf && null != this.aDxfs)
|
||
{
|
||
this.memory.WriteByte(c_oSer_TableStyleElement.DxfId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(this.aDxfs.length);
|
||
this.aDxfs.push(customElement.dxf);
|
||
}
|
||
}
|
||
};
|
||
function BinaryWorkbookTableWriter(memory, wb)
|
||
{
|
||
this.memory = memory;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.wb = wb;
|
||
this.Write = function()
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteWorkbookContent();});
|
||
};
|
||
this.WriteWorkbookContent = function()
|
||
{
|
||
var oThis = this;
|
||
//WorkbookPr
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.WorkbookPr, function(){oThis.WriteWorkbookPr();});
|
||
|
||
//BookViews
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.BookViews, function(){oThis.WriteBookViews();});
|
||
|
||
//DefinedNames
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.DefinedNames, function(){oThis.WriteDefinedNames();});
|
||
};
|
||
this.WriteWorkbookPr = function()
|
||
{
|
||
var oWorkbookPr = this.wb.WorkbookPr;
|
||
if(null != oWorkbookPr)
|
||
{
|
||
if(null != oWorkbookPr.Date1904)
|
||
{
|
||
this.memory.WriteByte(c_oSerBorderPropTypes.Date1904);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oWorkbookPr.Date1904);
|
||
}
|
||
else if (null != oWorkbookPr.DateCompatibility)
|
||
{
|
||
this.memory.WriteByte(c_oSerBorderPropTypes.DateCompatibility);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oWorkbookPr.DateCompatibility);
|
||
}
|
||
}
|
||
};
|
||
this.WriteBookViews = function()
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.WorkbookView, function(){oThis.WriteWorkbookView();});
|
||
};
|
||
this.WriteWorkbookView = function()
|
||
{
|
||
if (null != this.wb.nActive)
|
||
{
|
||
this.memory.WriteByte( c_oSerWorkbookViewTypes.ActiveTab);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(this.wb.nActive);
|
||
}
|
||
};
|
||
this.WriteDefinedNames = function()
|
||
{
|
||
var oThis = this;
|
||
//собираем все defined names в массив
|
||
var allDefined = new Object();
|
||
if(null != this.wb.DefinedNames)
|
||
{
|
||
for(var i in this.wb.DefinedNames)
|
||
{
|
||
var oDefinedName = this.wb.DefinedNames[i];
|
||
if(null == allDefined[oDefinedName.Name])
|
||
allDefined[oDefinedName.Name] = {global: oDefinedName, local: {}};
|
||
}
|
||
}
|
||
for(var i = 0, length = this.wb.aWorksheets.length; i < length; ++i)
|
||
{
|
||
var ws = this.wb.aWorksheets[i];
|
||
if(null != ws.DefinedNames)
|
||
{
|
||
for(var j in ws.DefinedNames)
|
||
{
|
||
var oDefinedName = ws.DefinedNames[j];
|
||
var elem = allDefined[oDefinedName.Name];
|
||
if(null == elem)
|
||
{
|
||
elem = {global: null, local: {}};
|
||
allDefined[oDefinedName.Name] = elem;
|
||
}
|
||
elem.local[i] = oDefinedName;
|
||
}
|
||
}
|
||
}
|
||
for(var i in allDefined)
|
||
{
|
||
var elem = allDefined[i];
|
||
for(var j in elem.local)
|
||
{
|
||
var localElem = elem.local[j];
|
||
var nLocalIndex = j - 0;
|
||
if(null != localElem)
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.DefinedName, function(){oThis.WriteDefinedName(localElem, nLocalIndex);});
|
||
}
|
||
if(null != elem.global)
|
||
this.bs.WriteItem(c_oSerWorkbookTypes.DefinedName, function(){oThis.WriteDefinedName(elem.global);});
|
||
}
|
||
};
|
||
this.WriteDefinedName = function(oDefinedName, LocalSheetId)
|
||
{
|
||
var oThis = this;
|
||
if (null != oDefinedName.Name)
|
||
{
|
||
this.memory.WriteByte(c_oSerDefinedNameTypes.Name);
|
||
this.memory.WriteString2(oDefinedName.Name);
|
||
}
|
||
if (null != oDefinedName.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSerDefinedNameTypes.Ref);
|
||
this.memory.WriteString2(oDefinedName.Ref);
|
||
}
|
||
if (null != LocalSheetId)
|
||
this.bs.WriteItem(c_oSerDefinedNameTypes.LocalSheetId, function(){oThis.memory.WriteLong(LocalSheetId);});
|
||
};
|
||
};
|
||
function BinaryWorksheetsTableWriter(memory, wb, oSharedStrings, oDrawings, aDxfs, aXfs, aFonts, aFills, aBorders, aNums, idWorksheet)
|
||
{
|
||
this.memory = memory;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.wb = wb;
|
||
this.oSharedStrings = oSharedStrings;
|
||
this.oDrawings = oDrawings;
|
||
this.aDxfs = aDxfs;
|
||
this.aXfs = aXfs;
|
||
this.aFonts = aFonts;
|
||
this.aFills = aFills;
|
||
this.aBorders = aBorders;
|
||
this.aNums = aNums;
|
||
this.oXfsMap = new Object();
|
||
this.nXfsMapIndex = 0;
|
||
this.oFontMap = new Object();
|
||
this.nFontMapIndex = 0;
|
||
this.oFillMap = new Object();
|
||
this.nFillMapIndex = 0;
|
||
this.oBorderMap = new Object();
|
||
this.nBorderMapIndex = 0;
|
||
this.oNumMap = new Object();
|
||
this.nNumMapIndex = 0;
|
||
this.oMerged = new Object();
|
||
this.oHyperlinks = new Object();
|
||
this.idWorksheet = idWorksheet;
|
||
this.oAllColXfsId = null;
|
||
this._getCrc32FromObjWithProperty = function(val)
|
||
{
|
||
return Asc.crc32(this._getStringFromObjWithProperty(val));
|
||
}
|
||
this._getStringFromObjWithProperty = function(val)
|
||
{
|
||
var sRes = "";
|
||
if(val.getProperties)
|
||
{
|
||
var properties = val.getProperties();
|
||
for(var i in properties)
|
||
{
|
||
var oCurProp = val.getProperty(properties[i]);
|
||
if(null != oCurProp && oCurProp.getProperties)
|
||
sRes += this._getStringFromObjWithProperty(oCurProp);
|
||
else
|
||
sRes += oCurProp;
|
||
}
|
||
}
|
||
return sRes;
|
||
}
|
||
this._prepeareStyles = function()
|
||
{
|
||
this.oFontMap[this._getStringFromObjWithProperty(g_oDefaultFont)] = {index: this.nFontMapIndex++, val: g_oDefaultFont};
|
||
this.oFillMap[this._getStringFromObjWithProperty(g_oDefaultFill)] = {index: this.nFillMapIndex++, val: g_oDefaultFill};
|
||
this.nFillMapIndex++;
|
||
this.oBorderMap[this._getStringFromObjWithProperty(g_oDefaultBorder)] = {index: this.nBorderMapIndex++, val: g_oDefaultBorder};
|
||
this.nNumMapIndex = g_nNumsMaxId;
|
||
var sAlign = "0";
|
||
var oAlign = null;
|
||
if(false == g_oDefaultAlign.isEqual(g_oDefaultAlignAbs))
|
||
{
|
||
oAlign = g_oDefaultAlign;
|
||
sAlign = this._getStringFromObjWithProperty(g_oDefaultAlign);
|
||
}
|
||
var xfs = {borderid: 0, fontid: 0, fillid: 0, numid: 0, align: oAlign, QuotePrefix: null}
|
||
this.oXfsMap["0|0|0|0|"+sAlign] = {index: this.nXfsMapIndex++, val: xfs};
|
||
}
|
||
this.Write = function()
|
||
{
|
||
var oThis = this;
|
||
this._prepeareStyles();
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteWorksheetsContent();});
|
||
};
|
||
this.WriteWorksheetsContent = function()
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = this.wb.aWorksheets.length; i < length; ++i)
|
||
{
|
||
var ws = this.wb.aWorksheets[i];
|
||
this.oMerged = new Object();
|
||
this.oHyperlinks = new Object();
|
||
if(null == this.idWorksheet || this.idWorksheet == ws.getId())
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Worksheet, function(){oThis.WriteWorksheet(ws, i);});
|
||
}
|
||
};
|
||
this.WriteWorksheet = function(ws, index)
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.WorksheetProp, function(){oThis.WriteWorksheetProp(ws, index);});
|
||
|
||
if(ws.aCols.length > 0 || null != ws.oAllCol)
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Cols, function(){oThis.WriteWorksheetCols(ws);});
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.SheetFormatPr, function(){oThis.WriteSheetFormatPr(ws);});
|
||
|
||
if(null != ws.PagePrintOptions)
|
||
{
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.PageMargins, function(){oThis.WritePageMargins(ws.PagePrintOptions.asc_getPageMargins());});
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.PageSetup, function(){oThis.WritePageSetup(ws.PagePrintOptions.asc_getPageSetup());});
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.PrintOptions, function(){oThis.WritePrintOptions(ws.PagePrintOptions);});
|
||
}
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.SheetData, function(){oThis.WriteSheetData(ws);});
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Hyperlinks, function(){oThis.WriteHyperlinks();});
|
||
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.MergeCells, function(){oThis.WriteMergeCells();});
|
||
|
||
if ( ws.Drawings && (ws.Drawings.length) )
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Drawings, function(){oThis.WriteDrawings(ws.Drawings);});
|
||
|
||
if(ws.aComments.length > 0 && ws.aCommentsCoords.length > 0)
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Comments, function(){oThis.WriteComments(ws.aComments, ws.aCommentsCoords);});
|
||
|
||
if(null != ws.AutoFilter)
|
||
{
|
||
var oBinaryTableWriter = new BinaryTableWriter(this.memory, this.aDxfs);
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Autofilter, function(){oBinaryTableWriter.WriteAutoFilter(ws.AutoFilter);});
|
||
}
|
||
if(null != ws.TableParts && ws.TableParts.length > 0)
|
||
{
|
||
var oBinaryTableWriter = new BinaryTableWriter(this.memory, this.aDxfs);
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.TableParts, function(){oBinaryTableWriter.Write(ws.TableParts);});
|
||
}
|
||
};
|
||
this.WriteWorksheetProp = function(ws, index)
|
||
{
|
||
var oThis = this;
|
||
//Name
|
||
this.memory.WriteByte(c_oSerWorksheetPropTypes.Name);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(ws.sName);
|
||
//SheetId
|
||
this.memory.WriteByte(c_oSerWorksheetPropTypes.SheetId);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(index + 1);
|
||
//Hidden
|
||
if(null != ws.bHidden)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetPropTypes.State);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
if(true == ws.bHidden)
|
||
this.memory.WriteByte(EVisibleType.visibleHidden);
|
||
else
|
||
this.memory.WriteByte(EVisibleType.visibleVisible);
|
||
}
|
||
};
|
||
this.WriteWorksheetCols = function(ws)
|
||
{
|
||
var oThis = this;
|
||
var aCols = ws.aCols;
|
||
var oPrevCol = null;
|
||
var nPrevIndexStart = null;
|
||
var nPrevIndex = null;
|
||
var aIndexes = new Array();
|
||
for(var i in aCols)
|
||
aIndexes.push(i - 0);
|
||
aIndexes.sort(fSortAscending);
|
||
var fInitCol = function(col, nMin, nMax){
|
||
oThis.AddToMergedAndHyperlink(col);
|
||
var oRes = {BestFit: col.BestFit, hd: col.hd, Max: nMax, Min: nMin, xfsid: null, width: col.width, CustomWidth: col.CustomWidth};
|
||
if(null == oRes.width)
|
||
{
|
||
if(null != ws.dDefaultwidth)
|
||
oRes.width = ws.dDefaultwidth;
|
||
else
|
||
oRes.width = gc_dDefaultColWidthCharsAttribute;
|
||
}
|
||
if(null != col.xfs)
|
||
oRes.xfsid = oThis.prepareXfs(col.xfs);
|
||
return oRes;
|
||
}
|
||
var oAllCol = null;
|
||
if(null != ws.oAllCol)
|
||
{
|
||
oAllCol = fInitCol(ws.oAllCol, 0, gc_nMaxCol0);
|
||
this.oAllColXfsId = oAllCol.xfsid;
|
||
}
|
||
for(var i = 0 , length = aIndexes.length; i < length; ++i)
|
||
{
|
||
var nIndex = aIndexes[i];
|
||
var col = aCols[nIndex];
|
||
if(null != col)
|
||
{
|
||
if(false == col.isEmptyToSave())
|
||
{
|
||
if(null != oAllCol && null == nPrevIndex && nIndex > 0)
|
||
{
|
||
oAllCol.Min = 1;
|
||
oAllCol.Max = nIndex;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oAllCol);});
|
||
}
|
||
if(null != nPrevIndex && (nPrevIndex + 1 != nIndex || false == oPrevCol.isEqual(col)))
|
||
{
|
||
var oColToWrite = fInitCol(oPrevCol, nPrevIndexStart + 1, nPrevIndex + 1);
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oColToWrite);});
|
||
nPrevIndexStart = null;
|
||
if(null != oAllCol && nPrevIndex + 1 != nIndex)
|
||
{
|
||
oAllCol.Min = nPrevIndex + 2;
|
||
oAllCol.Max = nIndex;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oAllCol);});
|
||
}
|
||
}
|
||
oPrevCol = col;
|
||
nPrevIndex = nIndex;
|
||
if(null == nPrevIndexStart)
|
||
nPrevIndexStart = nPrevIndex;
|
||
}
|
||
}
|
||
}
|
||
if(null != nPrevIndexStart && null != nPrevIndex && null != oPrevCol)
|
||
{
|
||
var oColToWrite = fInitCol(oPrevCol, nPrevIndexStart + 1, nPrevIndex + 1);
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oColToWrite);});
|
||
}
|
||
if(null != oAllCol)
|
||
{
|
||
if(null == nPrevIndex)
|
||
{
|
||
oAllCol.Min = 1;
|
||
oAllCol.Max = gc_nMaxCol0 + 1;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oAllCol);});
|
||
}
|
||
else if(gc_nMaxCol0 != nPrevIndex)
|
||
{
|
||
oAllCol.Min = nPrevIndex + 2;
|
||
oAllCol.Max = gc_nMaxCol0 + 1;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Col, function(){oThis.WriteWorksheetCol(oAllCol);});
|
||
}
|
||
}
|
||
};
|
||
this.WriteWorksheetCol = function(oCol)
|
||
{
|
||
if(null != oCol.BestFit)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.BestFit);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oCol.BestFit);
|
||
}
|
||
if(null != oCol.Hidden)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.Hidden);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oCol.Hidden);
|
||
}
|
||
if(null != oCol.Max)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.Max);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oCol.Max);
|
||
}
|
||
if(null != oCol.Min)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.Min);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oCol.Min);
|
||
}
|
||
if(null != oCol.xfsid)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.Style);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oCol.xfsid);
|
||
}
|
||
if(null != oCol.width)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.Width);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oCol.width);
|
||
}
|
||
if(null != oCol.CustomWidth)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetColTypes.CustomWidth);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oCol.CustomWidth);
|
||
}
|
||
};
|
||
this.WriteSheetFormatPr = function(ws)
|
||
{
|
||
var dDefaultwidth = ws.dDefaultwidth;
|
||
if(null == ws.dDefaultwidth)
|
||
dDefaultwidth = gc_dDefaultColWidthCharsAttribute;
|
||
if(null != dDefaultwidth)
|
||
{
|
||
this.memory.WriteByte(c_oSerSheetFormatPrTypes.DefaultColWidth);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dDefaultwidth);
|
||
}
|
||
if(null != ws.dDefaultheight)
|
||
{
|
||
this.memory.WriteByte(c_oSerSheetFormatPrTypes.DefaultRowHeight);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(ws.dDefaultheight);
|
||
}
|
||
};
|
||
this.WritePageMargins = function(oMargins)
|
||
{
|
||
//Left
|
||
var dLeft = oMargins.asc_getLeft();
|
||
if(null != dLeft)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PageMargins.Left);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dLeft);
|
||
}
|
||
//Top
|
||
var dTop = oMargins.asc_getTop();
|
||
if(null != dTop)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PageMargins.Top);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dTop);
|
||
}
|
||
//Right
|
||
var dRight = oMargins.asc_getRight();
|
||
if(null != dRight)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PageMargins.Right);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dRight);
|
||
}
|
||
//Bottom
|
||
var dBottom = oMargins.asc_getBottom();
|
||
if(null != dBottom)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PageMargins.Bottom);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(dBottom);
|
||
}
|
||
|
||
this.memory.WriteByte(c_oSer_PageMargins.Header);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(12.7);//0.5inch
|
||
|
||
this.memory.WriteByte(c_oSer_PageMargins.Footer);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(12.7);//0.5inch
|
||
};
|
||
this.WritePageSetup = function(oPageSetup)
|
||
{
|
||
//Orientation
|
||
var byteOrientation = oPageSetup.asc_getOrientation();
|
||
if(null != byteOrientation)
|
||
{
|
||
var byteFormatOrientation = null;
|
||
switch(byteOrientation)
|
||
{
|
||
case c_oAscPageOrientation.PagePortrait: byteFormatOrientation = EPageOrientation.pageorientPortrait;break;
|
||
case c_oAscPageOrientation.PageLandscape: byteFormatOrientation = EPageOrientation.pageorientLandscape;break;
|
||
}
|
||
if(null != byteFormatOrientation)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PageSetup.Orientation);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(byteFormatOrientation);
|
||
}
|
||
}
|
||
//PageSize
|
||
var dWidth = oPageSetup.asc_getWidth();
|
||
var dHeight = oPageSetup.asc_getHeight();
|
||
if(null != dWidth && null != dHeight)
|
||
{
|
||
var item = DocumentPageSize.getSizeByWH(dWidth, dHeight);
|
||
this.memory.WriteByte(c_oSer_PageSetup.PaperSize);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteByte(item.id);
|
||
}
|
||
};
|
||
this.WritePrintOptions = function(oPrintOptions)
|
||
{
|
||
//GridLines
|
||
var bGridLines = oPrintOptions.asc_getGridLines();
|
||
if(null != bGridLines)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PrintOptions.GridLines);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(bGridLines);
|
||
}
|
||
//Headings
|
||
var bHeadings = oPrintOptions.asc_getHeadings();
|
||
if(null != bHeadings)
|
||
{
|
||
this.memory.WriteByte(c_oSer_PrintOptions.Headings);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(bHeadings);
|
||
}
|
||
};
|
||
this.WriteHyperlinks = function()
|
||
{
|
||
var oThis = this;
|
||
for(var i in this.oHyperlinks)
|
||
{
|
||
var hyp = this.oHyperlinks[i];
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Hyperlink, function(){oThis.WriteHyperlink(hyp);});
|
||
}
|
||
};
|
||
this.WriteHyperlink = function(oHyperlink)
|
||
{
|
||
if(null != oHyperlink.Ref)
|
||
{
|
||
this.memory.WriteByte(c_oSerHyperlinkTypes.Ref);
|
||
this.memory.WriteString2(oHyperlink.Ref.getName());
|
||
}
|
||
if(null != oHyperlink.Hyperlink)
|
||
{
|
||
this.memory.WriteByte(c_oSerHyperlinkTypes.Hyperlink);
|
||
this.memory.WriteString2(oHyperlink.Hyperlink);
|
||
}
|
||
if(null != oHyperlink.Location)
|
||
{
|
||
this.memory.WriteByte(c_oSerHyperlinkTypes.Location);
|
||
this.memory.WriteString2(oHyperlink.Location);
|
||
}
|
||
if(null != oHyperlink.Tooltip)
|
||
{
|
||
this.memory.WriteByte(c_oSerHyperlinkTypes.Tooltip);
|
||
this.memory.WriteString2(oHyperlink.Tooltip);
|
||
}
|
||
};
|
||
this.WriteMergeCells = function()
|
||
{
|
||
var oThis = this;
|
||
for(var i in this.oMerged)
|
||
{
|
||
this.memory.WriteByte(c_oSerWorksheetsTypes.MergeCell);
|
||
this.memory.WriteString2(i);
|
||
}
|
||
};
|
||
this.WriteDrawings = function(aDrawings)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = aDrawings.length; i < length; ++i)
|
||
{
|
||
var oDrawing = aDrawings[i];
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Drawing, function(){oThis.WriteDrawing(oDrawing);});
|
||
}
|
||
};
|
||
this.WriteDrawing = function(oDrawing)
|
||
{
|
||
var oThis = this;
|
||
if(null != oDrawing.Type)
|
||
this.bs.WriteItem(c_oSer_DrawingType.Type, function(){oThis.memory.WriteByte(ECellAnchorType.cellanchorOneCell);});
|
||
if(null != oDrawing.from)
|
||
this.bs.WriteItem(c_oSer_DrawingType.From, function(){oThis.WriteFromTo(oDrawing.from);});
|
||
if(null != oDrawing.to)
|
||
this.bs.WriteItem(c_oSer_DrawingType.To, function(){oThis.WriteFromTo(oDrawing.to);});
|
||
// if(null != oDrawing.Pos)
|
||
// this.bs.WriteItem(c_oSer_DrawingType.Pos, function(){oThis.WritePos(oDrawing.Pos);});
|
||
if(oDrawing.isChart())
|
||
{
|
||
var oBinaryChartWriter = new BinaryChartWriter(this.memory);
|
||
this.bs.WriteItem(c_oSer_DrawingType.GraphicFrame, function(){oBinaryChartWriter.Write(oDrawing.chart);});
|
||
}
|
||
else
|
||
{
|
||
if ( (null != oDrawing.imageUrl) && ("" != oDrawing.imageUrl))
|
||
this.bs.WriteItem(c_oSer_DrawingType.Pic, function(){oThis.WritePic(oDrawing.imageUrl);});
|
||
}
|
||
};
|
||
this.WriteFromTo = function(oFromTo)
|
||
{
|
||
if(null != oFromTo.col)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingFromToType.Col);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oFromTo.col);
|
||
}
|
||
if(null != oFromTo.colOff)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingFromToType.ColOff);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oFromTo.colOff);
|
||
}
|
||
if(null != oFromTo.row)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingFromToType.Row);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oFromTo.row);
|
||
}
|
||
if(null != oFromTo.rowOff)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingFromToType.RowOff);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oFromTo.rowOff);
|
||
}
|
||
};
|
||
this.WritePos = function(oPos)
|
||
{
|
||
if(null != oPos.X)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingPosType.X);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oPos.X);
|
||
}
|
||
if(null != oPos.Y)
|
||
{
|
||
this.memory.WriteByte(c_oSer_DrawingPosType.Y);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oPos.Y);
|
||
}
|
||
};
|
||
this.WritePic = function(oPic)
|
||
{
|
||
var oThis = this;
|
||
if(null != oPic && "" != oPic)
|
||
{
|
||
var sSrc = oPic;
|
||
var sLocalUrl = this.wb.sUrlPath + "media/";
|
||
if(0 == sSrc.indexOf(sLocalUrl))
|
||
sSrc = sSrc.substring(sLocalUrl.length);
|
||
var nIndex = this.oDrawings.items[sSrc];
|
||
if(null == nIndex)
|
||
{
|
||
nIndex = this.oDrawings.length;
|
||
this.oDrawings.items[sSrc] = nIndex;
|
||
this.oDrawings.length++;
|
||
}
|
||
this.bs.WriteItem(c_oSer_DrawingType.PicSrc, function(){oThis.memory.WriteLong(nIndex);});
|
||
}
|
||
};
|
||
this.WriteSheetData = function(ws)
|
||
{
|
||
var oThis = this;
|
||
//сортируем Row по индексам
|
||
var aIndexes = new Array();
|
||
for(var i in ws.aGCells)
|
||
aIndexes.push(i - 0);
|
||
aIndexes.sort(fSortAscending);
|
||
for(var i = 0, length = aIndexes.length; i < length; ++i)
|
||
{
|
||
var row = ws.aGCells[aIndexes[i]];
|
||
if(null != row)
|
||
{
|
||
this.AddToMergedAndHyperlink(row);
|
||
if(false == row.isEmptyToSave())
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Row, function(){oThis.WriteRow(row);});
|
||
}
|
||
}
|
||
};
|
||
this.WriteRow = function(oRow)
|
||
{
|
||
var oThis = this;
|
||
if(null != oRow.r)
|
||
{
|
||
this.memory.WriteByte(c_oSerRowTypes.Row);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(oRow.r);
|
||
}
|
||
if(null != oRow.xfs)
|
||
{
|
||
var nXfsId = this.prepareXfs(oRow.xfs);
|
||
this.memory.WriteByte(c_oSerRowTypes.Style);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(nXfsId);
|
||
}
|
||
if(null != oRow.h)
|
||
{
|
||
this.memory.WriteByte(c_oSerRowTypes.Height);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(oRow.h);
|
||
}
|
||
if(null != oRow.CustomHeight)
|
||
{
|
||
this.memory.WriteByte(c_oSerRowTypes.CustomHeight);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oRow.CustomHeight);
|
||
}
|
||
if(null != oRow.hd)
|
||
{
|
||
this.memory.WriteByte(c_oSerRowTypes.Hidden);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(oRow.hd);
|
||
}
|
||
|
||
this.memory.WriteByte(c_oSerRowTypes.Cells);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteCells(oRow.c);});
|
||
};
|
||
this.WriteCells = function(aCells)
|
||
{
|
||
var oThis = this;
|
||
var aIndexes = new Array();
|
||
for(var i in aCells)
|
||
aIndexes.push(i - 0);
|
||
aIndexes.sort(fSortAscending);
|
||
for(var i = 0, length = aIndexes.length; i < length; ++i)
|
||
{
|
||
var cell = aCells[aIndexes[i]];
|
||
//готовим ячейку к записи
|
||
var nXfsId = this.prepareXfs(cell.xfs);
|
||
this.AddToMergedAndHyperlink(cell);
|
||
if(0 != nXfsId || false == cell.isEmptyText() || null != cell.merged || cell.hyperlinks.length > 0)
|
||
this.bs.WriteItem(c_oSerRowTypes.Cell, function(){oThis.WriteCell(cell, nXfsId);});
|
||
}
|
||
};
|
||
this.prepareXfs = function(xfs)
|
||
{
|
||
var nXfsId = 0;
|
||
if(null != xfs)
|
||
{
|
||
var sStyle = "";
|
||
var font = 0;
|
||
if(null != xfs.font)
|
||
{
|
||
var sHash = this._getStringFromObjWithProperty(xfs.font);
|
||
var elem = this.oFontMap[sHash];
|
||
if(null == elem)
|
||
{
|
||
font = this.nFontMapIndex++;
|
||
this.oFontMap[sHash] = {index: font, val: xfs.font};
|
||
}
|
||
else
|
||
font = elem.index;
|
||
}
|
||
sStyle += font.toString();
|
||
var fill = 0;
|
||
if(null != xfs.fill)
|
||
{
|
||
var sHash = this._getStringFromObjWithProperty(xfs.fill);
|
||
var elem = this.oFillMap[sHash];
|
||
if(null == elem)
|
||
{
|
||
fill = this.nFillMapIndex++;
|
||
this.oFillMap[sHash] = {index: fill, val: xfs.fill};
|
||
}
|
||
else
|
||
fill = elem.index;
|
||
}
|
||
sStyle += "|" + fill.toString();
|
||
var border = 0;
|
||
if(null != xfs.border)
|
||
{
|
||
var sHash = this._getStringFromObjWithProperty(xfs.border);
|
||
var elem = this.oBorderMap[sHash];
|
||
if(null == elem)
|
||
{
|
||
border = this.nBorderMapIndex++;
|
||
this.oBorderMap[sHash] = {index: border, val: xfs.border};
|
||
}
|
||
else
|
||
border = elem.index;
|
||
}
|
||
sStyle += "|" + border.toString();
|
||
var num = 0;
|
||
if(null != xfs.num)
|
||
{
|
||
//стандартные форматы не записываем в map, на них можно ссылаться по id
|
||
var nStandartId = aStandartNumFormatsId[xfs.num.f];
|
||
if(null == nStandartId)
|
||
{
|
||
var sHash = this._getStringFromObjWithProperty(xfs.num);
|
||
var elem = this.oNumMap[sHash];
|
||
if(null == elem)
|
||
{
|
||
num = this.nNumMapIndex++;
|
||
this.oNumMap[sHash] = {index: num, val: xfs.num};
|
||
}
|
||
else
|
||
num = elem.index;
|
||
}
|
||
else
|
||
num = nStandartId;
|
||
}
|
||
sStyle += "|" + num.toString();
|
||
var align = "0";
|
||
if(null != xfs.align && false == xfs.align.isEqual(g_oDefaultAlignAbs))
|
||
align = this._getStringFromObjWithProperty(xfs.align);
|
||
sStyle += "|" + align;
|
||
var oXfsMapObj = this.oXfsMap[sStyle];
|
||
if(null == oXfsMapObj)
|
||
{
|
||
nXfsId = this.nXfsMapIndex;
|
||
var oXfs = {borderid: border, fontid: font, fillid: fill, numid: num, align: null, QuotePrefix: null};
|
||
if("0" != align)
|
||
oXfs.align = xfs.align;
|
||
if(null != xfs.QuotePrefix)
|
||
oXfs.QuotePrefix = xfs.QuotePrefix;
|
||
this.oXfsMap[sStyle] = {index: this.nXfsMapIndex++, val: oXfs};
|
||
}
|
||
else
|
||
nXfsId = oXfsMapObj.index;
|
||
}
|
||
return nXfsId;
|
||
}
|
||
this.AddToMergedAndHyperlink = function(container)
|
||
{
|
||
if(null != container.merged)
|
||
this.oMerged[container.merged.getName()] = 1;
|
||
if(null != container.hyperlinks)
|
||
{
|
||
for(var i = 0, length = container.hyperlinks.length; i < length; ++i)
|
||
{
|
||
var hyperlink = container.hyperlinks[i];
|
||
this.oHyperlinks[hyperlink.Ref.getName()] = hyperlink;
|
||
}
|
||
}
|
||
}
|
||
this.WriteCell = function(cell, nXfsId)
|
||
{
|
||
var oThis = this;
|
||
if(null != cell.oId)
|
||
{
|
||
this.memory.WriteByte(c_oSerCellTypes.Ref);
|
||
this.memory.WriteString2(cell.oId.getID());
|
||
}
|
||
if(null != nXfsId)
|
||
{
|
||
this.bs.WriteItem(c_oSerCellTypes.Style, function(){oThis.memory.WriteLong(nXfsId);});
|
||
}
|
||
var nCellType = cell.getType();
|
||
if(null != nCellType)
|
||
{
|
||
var nType = ECellTypeType.celltypeNumber;
|
||
switch(nCellType)
|
||
{
|
||
case CellValueType.Bool: nType = ECellTypeType.celltypeBool; break;
|
||
case CellValueType.Error: nType = ECellTypeType.celltypeError; break;
|
||
case CellValueType.Number: nType = ECellTypeType.celltypeNumber; break;
|
||
case CellValueType.String: nType = ECellTypeType.celltypeSharedString; break;
|
||
}
|
||
if(ECellTypeType.celltypeNumber != nType)
|
||
this.bs.WriteItem(c_oSerCellTypes.Type, function(){oThis.memory.WriteByte(nType);});
|
||
}
|
||
if(null != cell.sFormula)
|
||
this.bs.WriteItem(c_oSerCellTypes.Formula, function(){oThis.WriteFormula(cell.sFormula, cell.sFormulaCA);});
|
||
if(null != cell.oValue && false == cell.oValue.isEmpty())
|
||
{
|
||
var dValue = 0;
|
||
if(CellValueType.Error == nCellType || CellValueType.String == nCellType)
|
||
{
|
||
var sText = "";
|
||
var aText = null;
|
||
if(null != cell.oValue.text)
|
||
sText = cell.oValue.text;
|
||
else if(null != cell.oValue.multiText)
|
||
{
|
||
aText = cell.oValue.multiText;
|
||
for(var i = 0, length = cell.oValue.multiText.length; i < length; ++i)
|
||
sText += cell.oValue.multiText[i].text;
|
||
}
|
||
var item = this.oSharedStrings.strings[sText];
|
||
var bAddItem = false;
|
||
if(null == item)
|
||
{
|
||
item = {t: null, a: []};
|
||
bAddItem = true;
|
||
}
|
||
if(null == aText)
|
||
{
|
||
if(null == item.t)
|
||
{
|
||
dValue = this.oSharedStrings.index++;
|
||
item.t = {id: dValue, val: sText};
|
||
}
|
||
else
|
||
dValue = item.t.id;
|
||
}
|
||
else
|
||
{
|
||
var bFound = false;
|
||
for(var i = 0, length = item.a.length; i < length; ++i)
|
||
{
|
||
var oCurItem = item.a[i];
|
||
if(oCurItem.val.length == aText.length)
|
||
{
|
||
var bEqual = true;
|
||
for(var j = 0, length2 = aText.length; j < length2; ++j)
|
||
{
|
||
if(false == aText[j].isEqual(oCurItem.val[j]))
|
||
{
|
||
bEqual = false;
|
||
break;
|
||
}
|
||
}
|
||
if(bEqual)
|
||
{
|
||
bFound = true;
|
||
dValue = oCurItem.id;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if(false == bFound)
|
||
{
|
||
dValue = this.oSharedStrings.index++;
|
||
item.a.push({id: dValue, val: aText});
|
||
}
|
||
}
|
||
if(bAddItem)
|
||
this.oSharedStrings.strings[sText] = item;
|
||
}
|
||
else
|
||
{
|
||
if(null != cell.oValue.number)
|
||
dValue = cell.oValue.number;
|
||
}
|
||
this.bs.WriteItem(c_oSerCellTypes.Value, function(){oThis.memory.WriteDouble2(dValue);});
|
||
}
|
||
};
|
||
this.WriteFormula = function(sFormula, sFormulaCA)
|
||
{
|
||
// if(null != oFormula.aca)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Aca);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.aca);
|
||
// }
|
||
// if(null != oFormula.bx)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Bx);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.bx);
|
||
// }
|
||
if(null != sFormulaCA)
|
||
{
|
||
this.memory.WriteByte(c_oSerFormulaTypes.Ca);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(sFormulaCA);
|
||
}
|
||
// if(null != oFormula.del1)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Del1);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.del1);
|
||
// }
|
||
// if(null != oFormula.del2)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Del2);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.del2);
|
||
// }
|
||
// if(null != oFormula.dt2d)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Dt2D);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.dt2d);
|
||
// }
|
||
// if(null != oFormula.dtr)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Dtr);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteBool(oFormula.dtr);
|
||
// }
|
||
// if(null != oFormula.r1)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.R1);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
// this.memory.WriteString2(oFormula.r1);
|
||
// }
|
||
// if(null != oFormula.r2)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.R2);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
// this.memory.WriteString2(oFormula.r2);
|
||
// }
|
||
// if(null != oFormula.ref)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Ref);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
// this.memory.WriteString2(oFormula.ref);
|
||
// }
|
||
// if(null != oFormula.si)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Si);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
// this.memory.WriteLong(oFormula.si);
|
||
// }
|
||
// if(null != oFormula.t)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.T);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
// this.memory.WriteByte(oFormula.t);
|
||
// }
|
||
// if(null != oFormula.v)
|
||
// {
|
||
// this.memory.WriteByte(c_oSerFormulaTypes.Text);
|
||
// this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
// this.memory.WriteString2(oFormula.v);
|
||
// }
|
||
this.memory.WriteByte(c_oSerFormulaTypes.Text);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.memory.WriteString2(sFormula);
|
||
};
|
||
this.WriteComments = function(aComments, aCommentsCoords)
|
||
{
|
||
var oThis = this;
|
||
var oNewComments = new Object();
|
||
for(var i = 0, length = aComments.length; i < length; ++i)
|
||
{
|
||
var elem = aComments[i];
|
||
var nRow = elem.asc_getRow();
|
||
if(null == nRow)
|
||
nRow = 0;
|
||
var nCol = elem.asc_getCol();
|
||
if(null == nCol)
|
||
nCol = 0;
|
||
var row = oNewComments[nRow];
|
||
if(null == row)
|
||
{
|
||
row = new Object();
|
||
oNewComments[nRow] = row;
|
||
}
|
||
var comment = row[nCol];
|
||
if(null == comment)
|
||
{
|
||
comment = {data: new Array(), coord: null};
|
||
row[nCol] = comment;
|
||
}
|
||
comment.data.push(elem);
|
||
}
|
||
for(var i = 0, length = aCommentsCoords.length; i < length; ++i)
|
||
{
|
||
var elem = aCommentsCoords[i];
|
||
var nRow = elem.asc_getRow();
|
||
if(null == nRow)
|
||
nRow = 0;
|
||
var nCol = elem.asc_getCol();
|
||
if(null == nCol)
|
||
nCol = 0;
|
||
var row = oNewComments[nRow];
|
||
if(null == row)
|
||
{
|
||
row = new Object();
|
||
oNewComments[nRow] = row;
|
||
}
|
||
var comment = row[nCol];
|
||
if(null == comment)
|
||
{
|
||
comment = {data: new Array(), coord: null};
|
||
row[nCol] = comment;
|
||
}
|
||
comment.coord = elem;
|
||
}
|
||
for(var i in oNewComments)
|
||
{
|
||
var row = oNewComments[i];
|
||
for(var j in row)
|
||
{
|
||
var comment = row[j];
|
||
if(null == comment.coord || 0 == comment.data.length)
|
||
continue;
|
||
var coord = comment.coord;
|
||
if(null == coord.asc_getLeft() || null == coord.asc_getTop() || null == coord.asc_getRight() || null == coord.asc_getBottom() ||
|
||
null == coord.asc_getLeftOffset() || null == coord.asc_getTopOffset() || null == coord.asc_getRightOffset() || null == coord.asc_getBottomOffset() ||
|
||
null == coord.asc_getLeftMM() || null == coord.asc_getTopMM() || null == coord.asc_getWidthMM() || null == coord.asc_getHeightMM())
|
||
continue;
|
||
this.bs.WriteItem(c_oSerWorksheetsTypes.Comment, function(){oThis.WriteComment(comment);});
|
||
}
|
||
}
|
||
};
|
||
this.WriteComment = function(comment)
|
||
{
|
||
var oThis = this;
|
||
this.memory.WriteByte(c_oSer_Comments.Row);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getRow());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.Col);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getCol());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.CommentDatas);
|
||
this.memory.WriteByte(c_oSerPropLenType.Variable);
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteCommentDatas(comment.data);});
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.Left);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getLeft());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.Top);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getTop());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.Right);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getRight());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.Bottom);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getBottom());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.LeftOffset);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getLeftOffset());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.TopOffset);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getTopOffset());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.RightOffset);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getRightOffset());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.BottomOffset);
|
||
this.memory.WriteByte(c_oSerPropLenType.Long);
|
||
this.memory.WriteLong(comment.coord.asc_getBottomOffset());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.LeftMM);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(comment.coord.asc_getLeftMM());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.TopMM);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(comment.coord.asc_getTopMM());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.WidthMM);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(comment.coord.asc_getWidthMM());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.HeightMM);
|
||
this.memory.WriteByte(c_oSerPropLenType.Double);
|
||
this.memory.WriteDouble2(comment.coord.asc_getHeightMM());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.MoveWithCells);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(comment.coord.asc_getMoveWithCells());
|
||
|
||
this.memory.WriteByte(c_oSer_Comments.SizeWithCells);
|
||
this.memory.WriteByte(c_oSerPropLenType.Byte);
|
||
this.memory.WriteBool(comment.coord.asc_getSizeWithCells());
|
||
};
|
||
this.WriteCommentDatas = function(aDatas)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = aDatas.length; i < length; ++i)
|
||
this.bs.WriteItem( c_oSer_Comments.CommentData, function(){oThis.WriteCommentData(aDatas[i]);});
|
||
}
|
||
this.WriteCommentData = function(oCommentData)
|
||
{
|
||
var oThis = this;
|
||
var sText = oCommentData.asc_getText();
|
||
if(null != sText)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CommentData.Text);
|
||
this.memory.WriteString2(sText);
|
||
}
|
||
var sTime = oCommentData.asc_getTime();
|
||
if(null != sTime)
|
||
{
|
||
var oDate = new Date(sTime - 0);
|
||
|
||
this.memory.WriteByte(c_oSer_CommentData.Time);
|
||
this.memory.WriteString2(this.DateToISO8601(oDate));
|
||
}
|
||
var sUserId = oCommentData.asc_getUserId();
|
||
if(null != sUserId)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CommentData.UserId);
|
||
this.memory.WriteString2(sUserId);
|
||
}
|
||
var sUserName = oCommentData.asc_getUserName();
|
||
if(null != sUserName)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CommentData.UserName);
|
||
this.memory.WriteString2(sUserName);
|
||
}
|
||
var sQuoteText = null;
|
||
if(null != sQuoteText)
|
||
{
|
||
this.memory.WriteByte(c_oSer_CommentData.QuoteText);
|
||
this.memory.WriteString2(sQuoteText);
|
||
}
|
||
var bSolved = null;
|
||
if(null != bSolved)
|
||
this.bs.WriteItem( c_oSer_CommentData.Solved, function(){oThis.memory.WriteBool(bSolved);});
|
||
var bDocumentFlag = oCommentData.asc_getDocumentFlag();
|
||
if(null != bDocumentFlag)
|
||
this.bs.WriteItem( c_oSer_CommentData.Document, function(){oThis.memory.WriteBool(bDocumentFlag);});
|
||
var aReplies = oCommentData.aReplies;
|
||
if(null != aReplies && aReplies.length > 0)
|
||
this.bs.WriteItem( c_oSer_CommentData.Replies, function(){oThis.WriteReplies(aReplies);});
|
||
}
|
||
this.DateToISO8601 = function(d)
|
||
{
|
||
function pad(n){return n < 10 ? '0' + n : n;}
|
||
return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' +
|
||
pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' +
|
||
pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds())+'Z';
|
||
};
|
||
this.WriteReplies = function(aReplies)
|
||
{
|
||
var oThis = this;
|
||
for(var i = 0, length = aReplies.length; i < length; ++i)
|
||
this.bs.WriteItem( c_oSer_CommentData.Reply, function(){oThis.WriteCommentData(aReplies[i]);});
|
||
}
|
||
};
|
||
/** @constructor */
|
||
function BinaryOtherTableWriter(memory, wb, oDrawings)
|
||
{
|
||
this.memory = memory;
|
||
this.wb = wb;
|
||
this.bs = new BinaryCommonWriter(this.memory);
|
||
this.oDrawings = oDrawings;
|
||
this.Write = function()
|
||
{
|
||
var oThis = this;
|
||
this.bs.WriteItemWithLength(function(){oThis.WriteOtherContent();});
|
||
};
|
||
this.WriteOtherContent = function()
|
||
{
|
||
var oThis = this;
|
||
//borders
|
||
this.bs.WriteItem(c_oSer_OtherType.Media, function(){oThis.WriteMedia();});
|
||
this.bs.WriteItem(c_oSer_OtherType.Theme, function(){window.global_pptx_content_writer.WriteTheme(oThis.memory, oThis.wb.theme);});
|
||
};
|
||
this.WriteMedia = function()
|
||
{
|
||
var oThis = this;
|
||
var aDrawings = new Array(this.oDrawings.length);
|
||
for(var src in this.oDrawings.items)
|
||
{
|
||
var nIndex = this.oDrawings.items[src];
|
||
aDrawings[nIndex] = src;
|
||
}
|
||
|
||
for(var i = 0, length = aDrawings.length; i < length; ++i)
|
||
{
|
||
var src = aDrawings[i];
|
||
this.bs.WriteItem(c_oSer_OtherType.MediaItem, function(){oThis.WriteMediaItem(src, i);});
|
||
}
|
||
};
|
||
this.WriteMediaItem = function(src, index)
|
||
{
|
||
var oThis = this;
|
||
if(null != src)
|
||
{
|
||
this.memory.WriteByte(c_oSer_OtherType.MediaSrc);
|
||
this.memory.WriteString2(src);
|
||
}
|
||
if(null != index)
|
||
this.bs.WriteItem(c_oSer_OtherType.MediaId, function(){oThis.memory.WriteLong(index);});
|
||
};
|
||
|
||
};
|
||
/** @constructor */
|
||
function BinaryFileWriter(wb)
|
||
{
|
||
this.Memory = new CMemory();
|
||
this.wb = wb;
|
||
this.nLastFilePos = 0;
|
||
this.nRealTableCount = 0;
|
||
this.bs = new BinaryCommonWriter(this.Memory);
|
||
this.Write = function(idWorksheet)
|
||
{
|
||
//если idWorksheet не null, то надо серализовать только его.
|
||
this.WriteMainTable(idWorksheet);
|
||
return this.WriteFileHeader(this.Memory.GetCurPosition()) + this.Memory.GetBase64Memory();
|
||
}
|
||
this.WriteFileHeader = function(nDataSize)
|
||
{
|
||
return c_oSerFormat.Signature + ";v" + c_oSerFormat.Version + ";" + nDataSize + ";";
|
||
}
|
||
this.WriteMainTable = function(idWorksheet)
|
||
{
|
||
var nTableCount = 128;//Специально ставим большое число, чтобы не увеличивать его при добавлении очередной таблицы.
|
||
this.nRealTableCount = 0;//Специально ставим большое число, чтобы не увеличивать его при добавлении очередной таблицы.
|
||
var nStart = this.Memory.GetCurPosition();
|
||
//вычисляем с какой позиции можно писать таблицы
|
||
var nmtItemSize = 5;//5 byte
|
||
this.nLastFilePos = nStart + nTableCount * nmtItemSize;
|
||
//Write mtLen
|
||
this.Memory.WriteByte(0);
|
||
var oSharedStrings = {index: 0, strings: new Object()};
|
||
var oDrawings = {length: 0, items: new Object()};
|
||
//Write SharedStrings
|
||
var nSharedStringsPos = this.ReserveTable(c_oSerTableTypes.SharedStrings);
|
||
//Write Styles
|
||
var nStylesTablePos = this.ReserveTable(c_oSerTableTypes.Styles);
|
||
//Workbook
|
||
this.WriteTable(c_oSerTableTypes.Workbook, new BinaryWorkbookTableWriter(this.Memory, this.wb));
|
||
//Worksheets
|
||
var aXfs = new Array();
|
||
var aFonts = new Array();
|
||
var aFills = new Array();
|
||
var aBorders = new Array();
|
||
var aNums = new Array();
|
||
var aDxfs = new Array();
|
||
var oBinaryWorksheetsTableWriter = new BinaryWorksheetsTableWriter(this.Memory, this.wb, oSharedStrings, oDrawings, aDxfs, aXfs, aFonts, aFills, aBorders, aNums, idWorksheet);
|
||
this.WriteTable(c_oSerTableTypes.Worksheets, oBinaryWorksheetsTableWriter);
|
||
//OtherTable
|
||
this.WriteTable(c_oSerTableTypes.Other, new BinaryOtherTableWriter(this.Memory, this.wb, oDrawings));
|
||
//Write SharedStrings
|
||
this.WriteReserved(new BinarySharedStringsTableWriter(this.Memory, oSharedStrings), nSharedStringsPos);
|
||
//Write Styles
|
||
this.WriteReserved(new BinaryStylesTableWriter(this.Memory, this.wb, oBinaryWorksheetsTableWriter), nStylesTablePos);
|
||
//Пишем количество таблиц
|
||
this.Memory.Seek(nStart);
|
||
this.Memory.WriteByte(this.nRealTableCount);
|
||
|
||
//seek в конец, потому что GetBase64Memory заканчивает запись на текущей позиции.
|
||
this.Memory.Seek(this.nLastFilePos);
|
||
}
|
||
this.WriteTable = function(type, oTableSer)
|
||
{
|
||
//Write mtItem
|
||
//Write mtiType
|
||
this.Memory.WriteByte(type);
|
||
//Write mtiOffBits
|
||
this.Memory.WriteLong(this.nLastFilePos);
|
||
|
||
//Write table
|
||
//Запоминаем позицию в MainTable
|
||
var nCurPos = this.Memory.GetCurPosition();
|
||
//Seek в свободную область
|
||
this.Memory.Seek(this.nLastFilePos);
|
||
oTableSer.Write();
|
||
//сдвигаем позицию куда можно следующую таблицу
|
||
this.nLastFilePos = this.Memory.GetCurPosition();
|
||
//Seek вобратно в MainTable
|
||
this.Memory.Seek(nCurPos);
|
||
|
||
this.nRealTableCount++;
|
||
}
|
||
this.ReserveTable = function(type)
|
||
{
|
||
var res = 0;
|
||
//Write mtItem
|
||
//Write mtiType
|
||
this.Memory.WriteByte(type);
|
||
res = this.Memory.GetCurPosition();
|
||
//Write mtiOffBits
|
||
this.Memory.WriteLong(this.nLastFilePos);
|
||
return res;
|
||
}
|
||
this.WriteReserved = function(oTableSer, nPos)
|
||
{
|
||
this.Memory.Seek(nPos);
|
||
this.Memory.WriteLong(this.nLastFilePos);
|
||
|
||
//Write table
|
||
//Запоминаем позицию в MainTable
|
||
var nCurPos = this.Memory.GetCurPosition();
|
||
//Seek в свободную область
|
||
this.Memory.Seek(this.nLastFilePos);
|
||
oTableSer.Write();
|
||
//сдвигаем позицию куда можно следующую таблицу
|
||
this.nLastFilePos = this.Memory.GetCurPosition();
|
||
//Seek вобратно в MainTable
|
||
this.Memory.Seek(nCurPos);
|
||
|
||
this.nRealTableCount++;
|
||
}
|
||
};
|
||
/** @constructor */
|
||
function Binary_TableReader(stream, Dxfs)
|
||
{
|
||
this.stream = stream;
|
||
this.Dxfs = Dxfs;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.Read = function(length, aTables)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTables(t,l, aTables);
|
||
});
|
||
return res;
|
||
};
|
||
this.ReadTables = function(type, length, aTables)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TablePart.Table == type )
|
||
{
|
||
var oNewTable = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTable(t,l, oNewTable);
|
||
});
|
||
aTables.push(oNewTable);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadTable = function(type, length, oTable)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TablePart.Ref == type )
|
||
oTable.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TablePart.TotalsRowCount == type )
|
||
oTable.TotalsRowCount = this.stream.GetULongLE();
|
||
else if ( c_oSer_TablePart.DisplayName == type )
|
||
oTable.DisplayName = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TablePart.AutoFilter == type )
|
||
{
|
||
oTable.AutoFilter = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadAutoFilter(t,l, oTable.AutoFilter);
|
||
});
|
||
}
|
||
else if ( c_oSer_TablePart.SortState == type )
|
||
{
|
||
oTable.SortState = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadSortState(t,l, oTable.SortState);
|
||
});
|
||
}
|
||
else if ( c_oSer_TablePart.TableColumns == type )
|
||
{
|
||
oTable.TableColumns = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableColumns(t,l, oTable.TableColumns);
|
||
});
|
||
}
|
||
else if ( c_oSer_TablePart.TableStyleInfo == type )
|
||
{
|
||
oTable.TableStyleInfo = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadTableStyleInfo(t,l, oTable.TableStyleInfo);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadAutoFilter = function(type, length, oAutoFilter)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_AutoFilter.Ref == type )
|
||
oAutoFilter.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_AutoFilter.FilterColumns == type )
|
||
{
|
||
oAutoFilter.FilterColumns = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFilterColumns(t,l, oAutoFilter.FilterColumns);
|
||
});
|
||
}
|
||
else if ( c_oSer_AutoFilter.SortState == type )
|
||
{
|
||
oAutoFilter.SortState = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadSortState(t,l, oAutoFilter.SortState);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadFilterColumns = function(type, length, aFilterColumns)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_AutoFilter.FilterColumn == type )
|
||
{
|
||
var oFilterColumn = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFilterColumn(t,l, oFilterColumn);
|
||
});
|
||
aFilterColumns.push(oFilterColumn);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadFilterColumn = function(type, length, oFilterColumn)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_FilterColumn.ColId == type )
|
||
oFilterColumn.ColId = this.stream.GetULongLE();
|
||
else if ( c_oSer_FilterColumn.Filters == type )
|
||
{
|
||
oFilterColumn.Filters = {Values: new Array(), Dates: new Array()};
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFilters(t,l, oFilterColumn.Filters);
|
||
});
|
||
}
|
||
else if ( c_oSer_FilterColumn.CustomFilters == type )
|
||
{
|
||
oFilterColumn.CustomFiltersObj = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCustomFilters(t,l, oFilterColumn.CustomFiltersObj);
|
||
});
|
||
}
|
||
else if ( c_oSer_FilterColumn.DynamicFilter == type )
|
||
{
|
||
oFilterColumn.DynamicFilter = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadDynamicFilter(t,l, oFilterColumn.DynamicFilter);
|
||
});
|
||
}else if ( c_oSer_FilterColumn.ColorFilter == type )
|
||
{
|
||
oFilterColumn.ColorFilter = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadColorFilter(t,l, oFilterColumn.ColorFilter);
|
||
});
|
||
}
|
||
else if ( c_oSer_FilterColumn.Top10 == type )
|
||
{
|
||
oFilterColumn.Top10 = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadTop10(t,l, oFilterColumn.Top10);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadFilters = function(type, length, oFilters)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_FilterColumn.Filter == type )
|
||
{
|
||
var oFilterVal = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFilter(t,l, oFilterVal);
|
||
});
|
||
if(null != oFilterVal.Val)
|
||
oFilters.Values.push(oFilterVal.Val);
|
||
}
|
||
else if ( c_oSer_FilterColumn.DateGroupItem == type )
|
||
{
|
||
var oDateGroupItem = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadDateGroupItem(t,l, oDateGroupItem);
|
||
});
|
||
oFilters.Dates.push(oDateGroupItem);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadFilter = function(type, length, oFilter)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_Filter.Val == type )
|
||
oFilter.Val = this.stream.GetString2LE(length);
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadDateGroupItem = function(type, length, oDateGroupItem)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DateGroupItem.DateTimeGrouping == type )
|
||
oDateGroupItem.DateTimeGrouping = this.stream.GetUChar();
|
||
else if ( c_oSer_DateGroupItem.Day == type )
|
||
oDateGroupItem.Day = this.stream.GetULongLE();
|
||
else if ( c_oSer_DateGroupItem.Hour == type )
|
||
oDateGroupItem.Hour = this.stream.GetULongLE();
|
||
else if ( c_oSer_DateGroupItem.Minute == type )
|
||
oDateGroupItem.Minute = this.stream.GetULongLE();
|
||
else if ( c_oSer_DateGroupItem.Month == type )
|
||
oDateGroupItem.Month = this.stream.GetULongLE();
|
||
else if ( c_oSer_DateGroupItem.Second == type )
|
||
oDateGroupItem.Second = this.stream.GetULongLE();
|
||
else if ( c_oSer_DateGroupItem.Year == type )
|
||
oDateGroupItem.Year = this.stream.GetULongLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadCustomFilters = function(type, length, oCustomFilters)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CustomFilters.And == type )
|
||
oCustomFilters.And = this.stream.GetBool();
|
||
else if ( c_oSer_CustomFilters.CustomFilters == type )
|
||
{
|
||
oCustomFilters.CustomFilters = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCustomFiltersItems(t,l, oCustomFilters.CustomFilters);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadCustomFiltersItems = function(type, length, aCustomFilters)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CustomFilters.CustomFilter == type )
|
||
{
|
||
var oCustomFiltersItem = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadCustomFiltersItem(t,l, oCustomFiltersItem);
|
||
});
|
||
aCustomFilters.push(oCustomFiltersItem);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadCustomFiltersItem = function(type, length, oCustomFiltersItem)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CustomFilters.Operator == type )
|
||
oCustomFiltersItem.Operator = this.stream.GetUChar();
|
||
else if ( c_oSer_CustomFilters.Val == type )
|
||
oCustomFiltersItem.Val = this.stream.GetString2LE(length);
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadDynamicFilter = function(type, length, oDynamicFilter)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DynamicFilter.Type == type )
|
||
oDynamicFilter.Type = this.stream.GetUChar();
|
||
else if ( c_oSer_DynamicFilter.Val == type )
|
||
oDynamicFilter.Val = this.stream.GetDoubleLE();
|
||
else if ( c_oSer_DynamicFilter.MaxVal == type )
|
||
oDynamicFilter.MaxVal = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadColorFilter = function(type, length, oColorFilter)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_ColorFilter.CellColor == type )
|
||
oColorFilter.CellColor = this.stream.GetBool();
|
||
else if ( c_oSer_ColorFilter.DxfId == type )
|
||
{
|
||
var DxfId = this.stream.GetULongLE();
|
||
var dxf = this.Dxfs[DxfId];
|
||
oColorFilter.dxf = dxf;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTop10 = function(type, length, oTop10)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_Top10.FilterVal == type )
|
||
oTop10.FilterVal = this.stream.GetDoubleLE();
|
||
else if ( c_oSer_Top10.Percent == type )
|
||
oTop10.Percent = this.stream.GetBool();
|
||
else if ( c_oSer_Top10.Top == type )
|
||
oTop10.Top = this.stream.GetBool();
|
||
else if ( c_oSer_Top10.Val == type )
|
||
oTop10.Val = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadSortConditionContent = function(type, length, oSortCondition)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_SortState.ConditionRef == type )
|
||
oSortCondition.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_SortState.ConditionSortBy == type )
|
||
oSortCondition.ConditionSortBy = this.stream.GetUChar();
|
||
else if ( c_oSer_SortState.ConditionDescending == type )
|
||
oSortCondition.ConditionDescending = this.stream.GetBool();
|
||
else if ( c_oSer_SortState.ConditionDxfId == type )
|
||
{
|
||
var DxfId = this.stream.GetULongLE();
|
||
var dxf = this.Dxfs[DxfId];
|
||
oSortCondition.dxf = dxf;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadSortCondition = function(type, length, aSortConditions)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_SortState.SortCondition == type )
|
||
{
|
||
var oSortCondition = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadSortConditionContent(t,l, oSortCondition);
|
||
});
|
||
aSortConditions.push(oSortCondition);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadSortState = function(type, length, oSortState)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_SortState.Ref == type )
|
||
oSortState.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_SortState.CaseSensitive == type )
|
||
oSortState.CaseSensitive = this.stream.GetBool();
|
||
else if ( c_oSer_SortState.SortConditions == type )
|
||
{
|
||
oSortState.SortConditions = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadSortCondition(t,l, oSortState.SortConditions);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableColumn = function(type, length, oTableColumn)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TableColumns.Name == type )
|
||
oTableColumn.Name = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableColumns.TotalsRowLabel == type )
|
||
oTableColumn.TotalsRowLabel = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableColumns.TotalsRowFunction == type )
|
||
oTableColumn.TotalsRowFunction = this.stream.GetUChar();
|
||
else if ( c_oSer_TableColumns.TotalsRowFormula == type )
|
||
oTableColumn.TotalsRowFormula = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableColumns.DataDxfId == type )
|
||
{
|
||
var DxfId = this.stream.GetULongLE();
|
||
var dxf = this.Dxfs[DxfId];
|
||
oTableColumn.dxf = dxf;
|
||
}
|
||
else if ( c_oSer_TableColumns.CalculatedColumnFormula == type )
|
||
oTableColumn.CalculatedColumnFormula = this.stream.GetString2LE(length);
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableColumns = function(type, length, aTableColumns)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TableColumns.TableColumn == type )
|
||
{
|
||
var oTableColumn = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableColumn(t,l, oTableColumn);
|
||
});
|
||
aTableColumns.push(oTableColumn);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableStyleInfo = function(type, length, oTableStyleInfo)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TableStyleInfo.Name == type )
|
||
oTableStyleInfo.Name = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableStyleInfo.ShowColumnStripes == type )
|
||
oTableStyleInfo.ShowColumnStripes = this.stream.GetBool();
|
||
else if ( c_oSer_TableStyleInfo.ShowRowStripes == type )
|
||
oTableStyleInfo.ShowRowStripes = this.stream.GetBool();
|
||
else if ( c_oSer_TableStyleInfo.ShowFirstColumn == type )
|
||
oTableStyleInfo.ShowFirstColumn = this.stream.GetBool();
|
||
else if ( c_oSer_TableStyleInfo.ShowLastColumn == type )
|
||
oTableStyleInfo.ShowLastColumn = this.stream.GetBool();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function Binary_SharedStringTableReader(stream, wb, aSharedStrings)
|
||
{
|
||
this.stream = stream;
|
||
this.wb = wb;
|
||
this.aSharedStrings = aSharedStrings;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
return this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadSharedStringContent(t,l);
|
||
});
|
||
};
|
||
this.ReadSharedStringContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerSharedStringTypes.Si === type )
|
||
{
|
||
var oThis = this;
|
||
var Si = new CCellValue();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadSharedString(t,l,Si);
|
||
});
|
||
if(null != this.aSharedStrings)
|
||
this.aSharedStrings.push(Si);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadSharedString = function(type, length, Si)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerSharedStringTypes.Run == type )
|
||
{
|
||
var oThis = this;
|
||
var oRun = new CCellValueMultiText();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadRun(t,l,oRun);
|
||
});
|
||
if(null == Si.multiText)
|
||
Si.multiText = new Array();
|
||
Si.multiText.push(oRun);
|
||
}
|
||
else if ( c_oSerSharedStringTypes.Text == type )
|
||
{
|
||
if(null == Si.text)
|
||
Si.text = "";
|
||
Si.text += this.stream.GetString2LE(length);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadRun = function(type, length, oRun)
|
||
{
|
||
var oThis = this;
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerSharedStringTypes.RPr == type )
|
||
{
|
||
if(null == oRun.format)
|
||
oRun.format = new Font();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadRPr(t,l, oRun.format);
|
||
});
|
||
}
|
||
else if ( c_oSerSharedStringTypes.Text == type )
|
||
{
|
||
if(null == oRun.text)
|
||
oRun.text = "";
|
||
oRun.text += this.stream.GetString2LE(length);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadRPr = function(type, length, rPr)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerFontTypes.Bold == type )
|
||
rPr.b = this.stream.GetBool();
|
||
else if ( c_oSerFontTypes.Color == type )
|
||
{
|
||
var color = new OpenColor();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.bcr.ReadColorSpreadsheet(t,l, color);
|
||
});
|
||
if(null != color.rgb)
|
||
rPr.c = 0x00ffffff & color.rgb;
|
||
else if(null != color.theme)
|
||
rPr.c = color.toRgb(this.wb.theme);
|
||
if(null != color.theme)
|
||
rPr.themeColor = color.theme;
|
||
if(null != color.tint)
|
||
rPr.themeTint = color.tint;
|
||
}
|
||
else if ( c_oSerFontTypes.Italic == type )
|
||
rPr.i = this.stream.GetBool();
|
||
else if ( c_oSerFontTypes.RFont == type )
|
||
rPr.fn = this.stream.GetString2LE(length);
|
||
else if ( c_oSerFontTypes.Strike == type )
|
||
rPr.s = this.stream.GetBool();
|
||
else if ( c_oSerFontTypes.Sz == type )
|
||
rPr.fs = this.stream.GetDoubleLE();
|
||
else if ( c_oSerFontTypes.Underline == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EUnderline.underlineDouble: rPr.u = "double";break;
|
||
case EUnderline.underlineDoubleAccounting: rPr.u = "doubleAccounting";break;
|
||
case EUnderline.underlineNone: rPr.u = "none";break;
|
||
case EUnderline.underlineSingle: rPr.u = "single";break;
|
||
case EUnderline.underlineSingleAccounting: rPr.u = "singleAccounting";break;
|
||
default: rPr.u = "none";break;
|
||
}
|
||
}
|
||
else if ( c_oSerFontTypes.VertAlign == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EVerticalAlignRun.verticalalignrunBaseline: rPr.va = "baseline";break;
|
||
case EVerticalAlignRun.verticalalignrunSubscript: rPr.va = "subscript";break;
|
||
case EVerticalAlignRun.verticalalignrunSuperscript: rPr.va = "superscript";break;
|
||
default: rPr.va = "baseline";break;
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function Binary_StylesTableReader(stream, wb, aCellXfs, Dxfs)
|
||
{
|
||
this.stream = stream;
|
||
this.wb = wb;
|
||
this.oStyleManager = wb.oStyleManager;
|
||
this.aCellXfs = aCellXfs;
|
||
this.Dxfs = Dxfs;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.bssr = new Binary_SharedStringTableReader(this.stream, wb);
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
var aBorders = new Array();
|
||
var aFills = new Array();
|
||
var aFonts = new Array();
|
||
var oNumFmts = new Object();
|
||
var aCellXfs = new Array();
|
||
var oCustomTableStyles = new Object();
|
||
var res = this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadStylesContent(t,l, aBorders, aFills, aFonts, oNumFmts, aCellXfs, oCustomTableStyles);
|
||
});
|
||
this.InitStyleManager(aBorders, aFills, aFonts, oNumFmts, aCellXfs, oCustomTableStyles);
|
||
return res;
|
||
};
|
||
this.InitStyleManager = function(aBorders, aFills, aFonts, oNumFmts, aCellXfs, oCustomTableStyles)
|
||
{
|
||
for(var i = 0, length = aCellXfs.length; i < length; ++i)
|
||
{
|
||
var xfs = aCellXfs[i];
|
||
var oNewXfs = new CellXfs();
|
||
|
||
if(null != xfs.borderid)
|
||
{
|
||
var border = aBorders[xfs.borderid];
|
||
if(null != border)
|
||
oNewXfs.border = border.clone();
|
||
}
|
||
if(null != xfs.fillid)
|
||
{
|
||
var fill = aFills[xfs.fillid];
|
||
if(null != fill)
|
||
oNewXfs.fill = fill.clone();
|
||
}
|
||
if(null != xfs.fontid)
|
||
{
|
||
var font = aFonts[xfs.fontid];
|
||
if(null != font)
|
||
oNewXfs.font = font.clone();
|
||
}
|
||
if(null != xfs.numid)
|
||
{
|
||
var oCurNum = oNumFmts[xfs.numid];
|
||
if(null != oCurNum)
|
||
oNewXfs.num = this.ParseNum(oCurNum, oNumFmts);
|
||
else
|
||
oNewXfs.num = this.ParseNum({id: xfs.numid, f: null}, oNumFmts);
|
||
}
|
||
if(null != xfs.QuotePrefix)
|
||
oNewXfs.QuotePrefix = xfs.QuotePrefix;
|
||
if(null != xfs.align)
|
||
oNewXfs.align = xfs.align.clone();
|
||
|
||
this.aCellXfs.push(oNewXfs);
|
||
}
|
||
if(this.aCellXfs.length > 0)
|
||
{
|
||
var oFirstXfs = this.aCellXfs[0];
|
||
this.oStyleManager.oDefaultXfs = oFirstXfs;
|
||
}
|
||
for(var i in oCustomTableStyles)
|
||
{
|
||
var item = oCustomTableStyles[i];
|
||
if(null != item)
|
||
{
|
||
var style = item.style;
|
||
var elems = item.elements;
|
||
this.initTableStyle(style, elems, this.Dxfs);
|
||
this.wb.TableStyles.CustomStyles[i] = style;
|
||
}
|
||
}
|
||
this.oStyleManager.init();
|
||
}
|
||
this.initTableStyle = function(style, elems, Dxfs)
|
||
{
|
||
for(var j = 0, length2 = elems.length; j < length2; ++j)
|
||
{
|
||
var elem = elems[j];
|
||
if(null != elem.DxfId)
|
||
{
|
||
var Dxf = Dxfs[elem.DxfId];
|
||
if(null != Dxf)
|
||
{
|
||
var oTableStyleElement = new CTableStyleElement();
|
||
oTableStyleElement.dxf = Dxf;
|
||
if(null != elem.Size)
|
||
oTableStyleElement.size = elem.Size;
|
||
switch(elem.Type)
|
||
{
|
||
case ETableStyleType.tablestyletypeBlankRow: style.blankRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstColumn: style.firstColumn = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstColumnStripe: style.firstColumnStripe = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstColumnSubheading: style.firstColumnSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstHeaderCell: style.firstHeaderCell = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstRowStripe: style.firstRowStripe = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstRowSubheading: style.firstRowSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstSubtotalColumn: style.firstSubtotalColumn = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstSubtotalRow: style.firstSubtotalRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeFirstTotalCell: style.firstTotalCell = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeHeaderRow: style.headerRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeLastColumn: style.lastColumn = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeLastHeaderCell: style.lastHeaderCell = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeLastTotalCell: style.lastTotalCell = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypePageFieldLabels: style.pageFieldLabels = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypePageFieldValues: style.pageFieldValues = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondColumnStripe: style.secondColumnStripe = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondColumnSubheading: style.secondColumnSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondRowStripe: style.secondRowStripe = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondRowSubheading: style.secondRowSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondSubtotalColumn: style.secondSubtotalColumn = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeSecondSubtotalRow: style.secondSubtotalRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeThirdColumnSubheading: style.thirdColumnSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeThirdRowSubheading: style.thirdRowSubheading = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeThirdSubtotalColumn: style.thirdSubtotalColumn = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeThirdSubtotalRow: style.thirdSubtotalRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeTotalRow: style.totalRow = oTableStyleElement;break;
|
||
case ETableStyleType.tablestyletypeWholeTable: style.wholeTable = oTableStyleElement;break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.ParseNum = function(oNum, oNumFmts)
|
||
{
|
||
var oRes = null;
|
||
var sFormat = null;
|
||
if(null != oNum && null != oNum.f)
|
||
sFormat = oNum.f;
|
||
else
|
||
{
|
||
if(5 <= oNum.id && oNum.id <= 8)
|
||
{
|
||
//В спецификации нет стилей для чисел 5-8, экспериментально установлено, что это денежный формат, зависящий от локали.
|
||
//Устанавливаем как в Engilsh(US)
|
||
sFormat = "$#,##0.00_);[Red]($#,##0.00)";
|
||
}
|
||
else
|
||
{
|
||
var sStandartNumFormat = aStandartNumFormats[oNum.id];
|
||
if(null != sStandartNumFormat)
|
||
sFormat = sStandartNumFormat;
|
||
}
|
||
if(null == sFormat)
|
||
sFormat = "General";
|
||
if(null != oNumFmts)
|
||
oNumFmts[oNum.id] = {id:oNum.id, f: sFormat};
|
||
}
|
||
if(null != sFormat && "General" != sFormat)
|
||
{
|
||
oRes = new Num();
|
||
oRes.f = sFormat;
|
||
}
|
||
return oRes;
|
||
}
|
||
this.ReadStylesContent = function(type, length, aBorders, aFills, aFonts, oNumFmts, aCellXfs, oCustomTableStyles)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Borders === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadBorders(t,l,aBorders);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.Fills === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFills(t,l,aFills);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.Fonts === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFonts(t,l,aFonts);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.NumFmts === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadNumFmts(t,l,oNumFmts);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.CellXfs === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCellXfs(t,l,aCellXfs);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.Dxfs === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadDxfs(t,l,oThis.Dxfs);
|
||
});
|
||
}
|
||
else if ( c_oSerStylesTypes.TableStyles === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableStyles(t, l, oThis.wb.TableStyles, oCustomTableStyles);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadBorders = function(type, length, aBorders)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Border == type )
|
||
{
|
||
var oNewBorder = new Border();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadBorder(t,l,oNewBorder);
|
||
});
|
||
if(oNewBorder.isEqual(g_oDefaultBorderAbs))
|
||
oNewBorder = null;
|
||
aBorders.push(oNewBorder);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadBorder = function(type, length, oNewBorder)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerBorderTypes.Bottom == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.b);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.Diagonal == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.d);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.End == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.r);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.Horizontal == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.ih);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.Start == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.l);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.Top == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.t);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.Vertical == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadBorderProp(t,l,oNewBorder.iv);
|
||
});
|
||
}
|
||
else if ( c_oSerBorderTypes.DiagonalDown == type )
|
||
{
|
||
oNewBorder.dd = this.stream.GetBool();
|
||
}
|
||
else if ( c_oSerBorderTypes.DiagonalUp == type )
|
||
{
|
||
oNewBorder.du = this.stream.GetBool();
|
||
}
|
||
// else if ( c_oSerBorderTypes.Outline == type )
|
||
// {
|
||
// oNewBorder.outline = this.stream.GetBool();
|
||
// }
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadBorderProp = function(type, length, oBorderProp)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerBorderPropTypes.Style == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EBorderStyle.borderstyleDashDot:oBorderProp.s = "dashDot";break;
|
||
case EBorderStyle.borderstyleDashDotDot:oBorderProp.s = "dashDotDot";break;
|
||
case EBorderStyle.borderstyleDashed:oBorderProp.s = "dashed";break;
|
||
case EBorderStyle.borderstyleDotted:oBorderProp.s = "dotted";break;
|
||
case EBorderStyle.borderstyleDouble:oBorderProp.s = "double";break;
|
||
case EBorderStyle.borderstyleHair:oBorderProp.s = "hair";break;
|
||
case EBorderStyle.borderstyleMedium:oBorderProp.s = "medium";break;
|
||
case EBorderStyle.borderstyleMediumDashDot:oBorderProp.s = "mediumDashDot";break;
|
||
case EBorderStyle.borderstyleMediumDashDotDot:oBorderProp.s = "mediumDashDotDot";break;
|
||
case EBorderStyle.borderstyleMediumDashed:oBorderProp.s = "mediumDashed";break;
|
||
case EBorderStyle.borderstyleNone:oBorderProp.s = "none";break;
|
||
case EBorderStyle.borderstyleSlantDashDot:oBorderProp.s = "slantDashDot";break;
|
||
case EBorderStyle.borderstyleThick:oBorderProp.s = "thick";break;
|
||
case EBorderStyle.borderstyleThin:oBorderProp.s = "thin";break;
|
||
default :oBorderProp.s = "none";break;
|
||
}
|
||
}
|
||
else if ( c_oSerBorderPropTypes.Color == type )
|
||
{
|
||
var color = new OpenColor();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.bcr.ReadColorSpreadsheet(t,l, color);
|
||
});
|
||
if(null != color.rgb)
|
||
{
|
||
oBorderProp.c = 0x00FFFFFF & color.rgb;
|
||
}
|
||
else if(null != color.theme)
|
||
oBorderProp.c = color.toRgb(this.wb.theme);
|
||
if(null != color.theme)
|
||
oBorderProp.themeColor = color.theme;
|
||
if(null != color.tint)
|
||
oBorderProp.themeTint = color.tint;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCellXfs = function(type, length, aCellXfs)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Xfs == type )
|
||
{
|
||
var oNewXfs = {ApplyAlignment: null, ApplyBorder: null, ApplyFill: null, ApplyFont: null, ApplyNumberFormat: null,
|
||
BorderId: null, FillId: null, FontId: null, NumFmtId: null, QuotePrefix: null, Aligment: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadXfs(t,l,oNewXfs);
|
||
});
|
||
aCellXfs.push(oNewXfs);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadXfs = function(type, length, oXfs)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerXfsTypes.ApplyAlignment == type )
|
||
oXfs.ApplyAlignment = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.ApplyBorder == type )
|
||
oXfs.ApplyBorder = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.ApplyFill == type )
|
||
oXfs.ApplyFill = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.ApplyFont == type )
|
||
oXfs.ApplyFont = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.ApplyNumberFormat == type )
|
||
oXfs.ApplyNumberFormat = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.BorderId == type )
|
||
oXfs.borderid = this.stream.GetULongLE();
|
||
else if ( c_oSerXfsTypes.FillId == type )
|
||
oXfs.fillid = this.stream.GetULongLE();
|
||
else if ( c_oSerXfsTypes.FontId == type )
|
||
oXfs.fontid = this.stream.GetULongLE();
|
||
else if ( c_oSerXfsTypes.NumFmtId == type )
|
||
oXfs.numid = this.stream.GetULongLE();
|
||
else if ( c_oSerXfsTypes.QuotePrefix == type )
|
||
oXfs.QuotePrefix = this.stream.GetBool();
|
||
else if ( c_oSerXfsTypes.Aligment == type )
|
||
{
|
||
if(null == oXfs.Aligment)
|
||
oXfs.align = new Align();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadAligment(t,l,oXfs.align);
|
||
});
|
||
if(oXfs.align.isEqual(g_oDefaultAlignAbs))
|
||
oXfs.align = null;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadAligment = function(type, length, oAligment)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerAligmentTypes.Horizontal == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EHorizontalAlignment.horizontalalignmentCenter : oAligment.hor = "center";break;
|
||
case EHorizontalAlignment.horizontalalignmentContinuous : oAligment.hor = "center";break;
|
||
case EHorizontalAlignment.horizontalalignmentDistributed : oAligment.hor = "justify";break;
|
||
case EHorizontalAlignment.horizontalalignmentFill : oAligment.hor = "justify";break;
|
||
case EHorizontalAlignment.horizontalalignmentGeneral : oAligment.hor = "none";break;
|
||
case EHorizontalAlignment.horizontalalignmentJustify : oAligment.hor = "justify";break;
|
||
case EHorizontalAlignment.horizontalalignmentLeft : oAligment.hor = "left";break;
|
||
case EHorizontalAlignment.horizontalalignmentRight : oAligment.hor = "right";break;
|
||
}
|
||
}
|
||
else if ( c_oSerAligmentTypes.Indent == type )
|
||
oAligment.indent = this.stream.GetULongLE();
|
||
else if ( c_oSerAligmentTypes.RelativeIndent == type )
|
||
oAligment.RelativeIndent = this.stream.GetULongLE();
|
||
else if ( c_oSerAligmentTypes.ShrinkToFit == type )
|
||
oAligment.shrink = this.stream.GetBool();
|
||
else if ( c_oSerAligmentTypes.TextRotation == type )
|
||
oAligment.angle = this.stream.GetULongLE();
|
||
else if ( c_oSerAligmentTypes.Vertical == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EVerticalAlignment.verticalalignmentBottom : oAligment.ver = "bottom";break;
|
||
case EVerticalAlignment.verticalalignmentCenter : oAligment.ver = "center";break;
|
||
case EVerticalAlignment.verticalalignmentDistributed : oAligment.ver = "distributed";break;
|
||
case EVerticalAlignment.verticalalignmentJustify : oAligment.ver = "justify";break;
|
||
case EVerticalAlignment.verticalalignmentTop : oAligment.ver = "top";break;
|
||
}
|
||
}
|
||
else if ( c_oSerAligmentTypes.WrapText == type )
|
||
oAligment.wrap= this.stream.GetBool();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadFills = function(type, length, aFills)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Fill == type )
|
||
{
|
||
var oNewFill = new Fill();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFill(t,l,oNewFill);
|
||
});
|
||
if(oNewFill.isEqual(g_oDefaultFillAbs))
|
||
oNewFill = null;
|
||
aFills.push(oNewFill);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadFill = function(type, length, oFill)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerFillTypes.PatternFill == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadPatternFill(t,l,oFill);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPatternFill = function(type, length, oFill)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerFillTypes.PatternFillBgColor == type )
|
||
{
|
||
var color = new OpenColor();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.bcr.ReadColorSpreadsheet(t,l, color);
|
||
});
|
||
if(null != color.rgb)
|
||
oFill.bg = 0x00ffffff & color.rgb;
|
||
else if(null != color.theme)
|
||
oFill.bg = color.toRgb(this.wb.theme);
|
||
if(null != color.theme)
|
||
oFill.themeColor = color.theme;
|
||
if(null != color.tint)
|
||
oFill.themeTint = color.tint;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadFonts = function(type, length, aFonts)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Font == type )
|
||
{
|
||
var oNewFont = new Font();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.bssr.ReadRPr(t,l,oNewFont);
|
||
});
|
||
if(oNewFont.isEqual(g_oDefaultFontAbs))
|
||
oNewFont = null;
|
||
aFonts.push(oNewFont);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadNumFmts = function(type, length, oNumFmts)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.NumFmt == type )
|
||
{
|
||
var oNewNumFmt = {f: null, id: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadNumFmt(t,l,oNewNumFmt);
|
||
});
|
||
if(null != oNewNumFmt.id && null != oNewNumFmt.f)
|
||
oNumFmts[oNewNumFmt.id] = oNewNumFmt;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadNumFmt = function(type, length, oNumFmt)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerNumFmtTypes.FormatCode == type )
|
||
{
|
||
oNumFmt.f = this.stream.GetString2LE(length);
|
||
}
|
||
else if ( c_oSerNumFmtTypes.NumFmtId == type )
|
||
{
|
||
oNumFmt.id = this.stream.GetULongLE();;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDxfs = function(type, length, aDxfs)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerStylesTypes.Dxf == type )
|
||
{
|
||
var oDxf = new CellXfs();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadDxf(t,l,oDxf);
|
||
});
|
||
aDxfs.push(oDxf);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDxf = function(type, length, oDxf)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_Dxf.Alignment == type )
|
||
{
|
||
oDxf.align = new Align();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadAligment(t,l,oDxf.align);
|
||
});
|
||
}
|
||
else if ( c_oSer_Dxf.Border == type )
|
||
{
|
||
var oNewBorder = new Border();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadBorder(t,l,oNewBorder);
|
||
});
|
||
if(oNewBorder.isEqual(g_oDefaultBorderAbs))
|
||
oNewBorder = null;
|
||
oDxf.border = oNewBorder;
|
||
}
|
||
else if ( c_oSer_Dxf.Fill == type )
|
||
{
|
||
var oNewFill = new Fill();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadFill(t,l,oNewFill);
|
||
});
|
||
oDxf.fill = oNewFill;
|
||
}
|
||
else if ( c_oSer_Dxf.Font == type )
|
||
{
|
||
var oNewFont = new Font();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.bssr.ReadRPr(t,l,oNewFont);
|
||
});
|
||
oDxf.font = oNewFont;
|
||
}
|
||
else if ( c_oSer_Dxf.NumFmt == type )
|
||
{
|
||
var oNewNumFmt = {f: null, id: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadNumFmt(t,l,oNewNumFmt);
|
||
});
|
||
if(null != oNewNumFmt.id)
|
||
oDxf.num = this.ParseNum({id: oNewNumFmt.id, f: null}, null);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadTableStyles = function(type, length, oTableStyles, oCustomStyles)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_TableStyles.DefaultTableStyle == type )
|
||
oTableStyles.DefaultTableStyle = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableStyles.DefaultPivotStyle == type )
|
||
oTableStyles.DefaultPivotStyle = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_TableStyles.TableStyles == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableCustomStyles(t,l, oCustomStyles);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadTableCustomStyles = function(type, length, oCustomStyles)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if (c_oSer_TableStyles.TableStyle === type)
|
||
{
|
||
var oNewStyle = new CTableStyle();
|
||
var aElements = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableCustomStyle(t,l, oNewStyle, aElements);
|
||
});
|
||
if(null != oNewStyle.name && aElements.length > 0)
|
||
oCustomStyles[oNewStyle.name] = {style : oNewStyle, elements: aElements};
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableCustomStyle = function(type, length, oNewStyle, aElements)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if (c_oSer_TableStyle.Name === type)
|
||
oNewStyle.name = this.stream.GetString2LE(length);
|
||
else if (c_oSer_TableStyle.Pivot === type)
|
||
oNewStyle.pivot = this.stream.GetBool();
|
||
else if (c_oSer_TableStyle.Table === type)
|
||
oNewStyle.table = this.stream.GetBool();
|
||
else if (c_oSer_TableStyle.Elements === type)
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadTableCustomStyleElements(t,l, aElements);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableCustomStyleElements = function(type, length, aElements)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if (c_oSer_TableStyle.Element === type)
|
||
{
|
||
var oNewStyleElement = {Type: null, Size: null, DxfId: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadTableCustomStyleElement(t,l, oNewStyleElement);
|
||
});
|
||
if(null != oNewStyleElement.Type && null != oNewStyleElement.DxfId)
|
||
aElements.push(oNewStyleElement);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadTableCustomStyleElement = function(type, length, oNewStyleElement)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if (c_oSer_TableStyleElement.Type === type)
|
||
oNewStyleElement.Type = this.stream.GetUChar();
|
||
else if (c_oSer_TableStyleElement.Size === type)
|
||
oNewStyleElement.Size = this.stream.GetULongLE();
|
||
else if (c_oSer_TableStyleElement.DxfId === type)
|
||
oNewStyleElement.DxfId = this.stream.GetULongLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
};
|
||
/** @constructor */
|
||
function Binary_WorkbookTableReader(stream, oWorkbook)
|
||
{
|
||
this.stream = stream;
|
||
this.oWorkbook = oWorkbook;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
return this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadWorkbookContent(t,l);
|
||
});
|
||
};
|
||
this.ReadWorkbookContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorkbookTypes.WorkbookPr === type )
|
||
{
|
||
if(null == this.oWorkbook.WorkbookPr)
|
||
this.oWorkbook.WorkbookPr = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadWorkbookPr(t,l,oThis.oWorkbook.WorkbookPr);
|
||
});
|
||
}
|
||
else if ( c_oSerWorkbookTypes.BookViews === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadBookViews(t,l);
|
||
});
|
||
}
|
||
else if ( c_oSerWorkbookTypes.DefinedNames === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadDefinedNames(t,l,oThis.oWorkbook.DefinedNames);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorkbookPr = function(type, length, WorkbookPr)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerWorkbookPrTypes.Date1904 == type )
|
||
{
|
||
WorkbookPr.Date1904 = this.stream.GetBool();
|
||
g_bDate1904 = WorkbookPr.Date1904;
|
||
c_DateCorrectConst = g_bDate1904?c_Date1904Const:c_Date1900Const;
|
||
}
|
||
else if ( c_oSerWorkbookPrTypes.DateCompatibility == type )
|
||
WorkbookPr.DateCompatibility = this.stream.GetBool();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadBookViews = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorkbookTypes.WorkbookView == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadWorkbookView(t,l);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorkbookView = function(type, length, BookViews)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerWorkbookViewTypes.ActiveTab == type )
|
||
this.oWorkbook.nActive = this.stream.GetULongLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDefinedNames = function(type, length, aDefinedNames)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorkbookTypes.DefinedName == type )
|
||
{
|
||
var oNewDefinedName = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadDefinedName(t,l,oNewDefinedName);
|
||
});
|
||
if(null != oNewDefinedName.Name && null != oNewDefinedName.Ref)
|
||
{
|
||
if(null != oNewDefinedName.LocalSheetId)
|
||
{
|
||
var ws = this.oWorkbook.aWorksheets[oNewDefinedName.LocalSheetId];
|
||
if(null != ws)
|
||
ws.DefinedNames[oNewDefinedName.Name] = oNewDefinedName;
|
||
}
|
||
else
|
||
aDefinedNames[oNewDefinedName.Name] = oNewDefinedName;
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDefinedName = function(type, length, oDefinedName)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerDefinedNameTypes.Name == type )
|
||
oDefinedName.Name = this.stream.GetString2LE(length);
|
||
else if ( c_oSerDefinedNameTypes.Ref == type )
|
||
oDefinedName.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSerDefinedNameTypes.LocalSheetId == type )
|
||
oDefinedName.LocalSheetId = this.stream.GetULongLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function Binary_WorksheetTableReader(stream, wb, aSharedStrings, aCellXfs, Dxfs, oMediaArray)
|
||
{
|
||
this.stream = stream;
|
||
this.wb = wb;
|
||
this.aSharedStrings = aSharedStrings;
|
||
this.oMediaArray = oMediaArray;
|
||
this.aCellXfs = aCellXfs;
|
||
this.Dxfs = Dxfs;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.aMerged = new Array();
|
||
this.aHyperlinks = new Array();
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
return this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadWorksheetsContent(t,l);
|
||
});
|
||
};
|
||
this.ReadWorksheetsContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Worksheet === type )
|
||
{
|
||
this.aMerged = new Array();
|
||
this.aHyperlinks = new Array();
|
||
var oNewWorksheet = new Woorksheet(this.wb, wb.aWorksheets.length, false);
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadWorksheet(t,l, oNewWorksheet);
|
||
});
|
||
//merged
|
||
for(var i = 0, length = this.aMerged.length; i < length; ++i)
|
||
{
|
||
var range = oNewWorksheet.getRange2(this.aMerged[i]);
|
||
if(null != range)
|
||
range.mergeOpen();
|
||
}
|
||
//hyperlinks
|
||
for(var i = 0, length = this.aHyperlinks.length; i < length; ++i)
|
||
{
|
||
var hyperlink = this.aHyperlinks[i];
|
||
if (null !== hyperlink.Ref)
|
||
hyperlink.Ref.setHyperlink(hyperlink, true);
|
||
}
|
||
oNewWorksheet.init();
|
||
this.wb.aWorksheets.push(oNewWorksheet);
|
||
this.wb.aWorksheetsById[oNewWorksheet.getId()] = oNewWorksheet;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorksheet = function(type, length, oWorksheet)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.WorksheetProp == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadWorksheetProp(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.Cols == type )
|
||
{
|
||
if(null == oWorksheet.Cols)
|
||
oWorksheet.aCols = new Array();
|
||
var aTempCols = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadWorksheetCols(t,l, aTempCols, oWorksheet);
|
||
});
|
||
|
||
var fInitCol = function(oFrom, oTo)
|
||
{
|
||
if(null != oFrom.BestFit)
|
||
oTo.BestFit = oFrom.BestFit;
|
||
if(null != oFrom.hd)
|
||
oTo.hd = oFrom.hd;
|
||
if(null != oFrom.xfs)
|
||
oTo.xfs = oFrom.xfs.clone();
|
||
else if(null != oFrom.xfsid)
|
||
{
|
||
var xfs = oThis.aCellXfs[oFrom.xfsid];
|
||
if(null != xfs)
|
||
{
|
||
oFrom.xfs = xfs;
|
||
oTo.xfs = xfs.clone();
|
||
}
|
||
}
|
||
if(null != oFrom.width)
|
||
oTo.width = oFrom.width;
|
||
if(null != oFrom.CustomWidth)
|
||
oTo.CustomWidth = oFrom.CustomWidth;
|
||
if(oTo.index + 1 > oWorksheet.nColsCount)
|
||
oWorksheet.nColsCount = oTo.index + 1;
|
||
}
|
||
//если есть стиль последней колонки, назначаем его стилем всей таблицы и убираем из колонок
|
||
var oAllCol = null;
|
||
if(aTempCols.length > 0)
|
||
{
|
||
var oLast = aTempCols[aTempCols.length - 1];
|
||
if(gc_nMaxCol == oLast.Max)
|
||
{
|
||
oAllCol = oLast;
|
||
oWorksheet.oAllCol = new Col(oWorksheet, 0);
|
||
fInitCol(oAllCol, oWorksheet.oAllCol);
|
||
}
|
||
}
|
||
for(var i = 0, length = aTempCols.length; i < length; ++i)
|
||
{
|
||
var elem = aTempCols[i];
|
||
if(null != oAllCol && elem.BestFit == oAllCol.BestFit && elem.hd == oAllCol.hd && elem.xfs == oAllCol.xfs && elem.width == oAllCol.width && elem.CustomWidth == oAllCol.CustomWidth)
|
||
continue;
|
||
if(null == elem.width)
|
||
{
|
||
elem.width = 0;
|
||
elem.hd = true;
|
||
}
|
||
for(var j = elem.Min; j <= elem.Max; j++){
|
||
var oNewCol = new Col(oWorksheet, j - 1);
|
||
fInitCol(elem, oNewCol);
|
||
oWorksheet.aCols[oNewCol.index] = oNewCol;
|
||
}
|
||
}
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.SheetFormatPr == type )
|
||
{
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadSheetFormatPr(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.PageMargins == type )
|
||
{
|
||
var oPageMargins = new Asc.asc_CPageMargins();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadPageMargins(t,l, oPageMargins);
|
||
});
|
||
if(null == oWorksheet.PagePrintOptions)
|
||
oWorksheet.PagePrintOptions = new Asc.asc_CPageOptions();
|
||
oWorksheet.PagePrintOptions.asc_setPageMargins(oPageMargins);
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.PageSetup == type )
|
||
{
|
||
var oPageSetup = new Asc.asc_CPageSetup();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadPageSetup(t,l, oPageSetup);
|
||
});
|
||
if(null == oWorksheet.PagePrintOptions)
|
||
oWorksheet.PagePrintOptions = new Asc.asc_CPageOptions();
|
||
oWorksheet.PagePrintOptions.asc_setPageSetup(oPageSetup);
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.PrintOptions == type )
|
||
{
|
||
if(null == oWorksheet.PagePrintOptions)
|
||
oWorksheet.PagePrintOptions = new Asc.asc_CPageOptions();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadPrintOptions(t,l, oWorksheet.PagePrintOptions);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.Hyperlinks == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadHyperlinks(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.MergeCells == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadMergeCells(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.SheetData == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadSheetData(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.Drawings == type )
|
||
{
|
||
if(null == oWorksheet.Drawings)
|
||
oWorksheet.Drawings = new Array();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadDrawings(t,l, oWorksheet.Drawings, oWorksheet.Id);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.Autofilter == type )
|
||
{
|
||
var oBinary_TableReader = new Binary_TableReader(this.stream, this.Dxfs);
|
||
oWorksheet.AutoFilter = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oBinary_TableReader.ReadAutoFilter(t,l, oWorksheet.AutoFilter);
|
||
});
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.TableParts == type )
|
||
{
|
||
oWorksheet.TableParts = new Array();
|
||
var oBinary_TableReader = new Binary_TableReader(this.stream, this.Dxfs);
|
||
oBinary_TableReader.Read(length, oWorksheet.TableParts);
|
||
}
|
||
else if ( c_oSerWorksheetsTypes.Comments == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadComments(t,l, oWorksheet);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorksheetProp = function(type, length, oWorksheet)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerWorksheetPropTypes.Name == type )
|
||
oWorksheet.sName = this.stream.GetString2LE(length);
|
||
else if ( c_oSerWorksheetPropTypes.SheetId == type )
|
||
oWorksheet.nSheetId = this.stream.GetULongLE();
|
||
else if ( c_oSerWorksheetPropTypes.State == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case EVisibleType.visibleHidden: oWorksheet.bHidden = true;break;
|
||
case EVisibleType.visibleVeryHidden: oWorksheet.bHidden = true;break;
|
||
case EVisibleType.visibleVisible: oWorksheet.bHidden = false;break;
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorksheetCols = function(type, length, aTempCols, oWorksheet)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Col == type )
|
||
{
|
||
var oTempCol = {BestFit: null, hd: null, Max: null, Min: null, xfs: null, xfsid: null, width: null, CustomWidth: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadWorksheetCol(t,l, oTempCol);
|
||
});
|
||
aTempCols.push(oTempCol);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadWorksheetCol = function(type, length, oCol)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerWorksheetColTypes.BestFit == type )
|
||
oCol.BestFit = this.stream.GetBool();
|
||
else if ( c_oSerWorksheetColTypes.Hidden == type )
|
||
oCol.hd = this.stream.GetBool();
|
||
else if ( c_oSerWorksheetColTypes.Max == type )
|
||
oCol.Max = this.stream.GetULongLE();
|
||
else if ( c_oSerWorksheetColTypes.Min == type )
|
||
oCol.Min = this.stream.GetULongLE();
|
||
else if ( c_oSerWorksheetColTypes.Style == type )
|
||
oCol.xfsid = this.stream.GetULongLE();
|
||
else if ( c_oSerWorksheetColTypes.Width == type )
|
||
{
|
||
oCol.width = this.stream.GetDoubleLE();
|
||
if(g_nCurFileVersion < 2)
|
||
oCol.CustomWidth = 1;
|
||
}
|
||
else if ( c_oSerWorksheetColTypes.CustomWidth == type )
|
||
oCol.CustomWidth = this.stream.GetBool();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadSheetFormatPr = function(type, length, oWorksheet)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerSheetFormatPrTypes.DefaultColWidth == type )
|
||
oWorksheet.dDefaultwidth = this.stream.GetDoubleLE();
|
||
else if ( c_oSerSheetFormatPrTypes.DefaultRowHeight == type )
|
||
oWorksheet.dDefaultheight = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPageMargins = function(type, length, oPageMargins)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSer_PageMargins.Left == type )
|
||
oPageMargins.asc_setLeft(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_PageMargins.Top == type )
|
||
oPageMargins.asc_setTop(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_PageMargins.Right == type )
|
||
oPageMargins.asc_setRight(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_PageMargins.Bottom == type )
|
||
oPageMargins.asc_setBottom(this.stream.GetDoubleLE());
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPageSetup = function(type, length, oPageSetup)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSer_PageSetup.Orientation == type )
|
||
{
|
||
var byteFormatOrientation = this.stream.GetUChar();
|
||
var byteOrientation = null;
|
||
switch(byteFormatOrientation)
|
||
{
|
||
case EPageOrientation.pageorientPortrait: byteOrientation = c_oAscPageOrientation.PagePortrait;break;
|
||
case EPageOrientation.pageorientLandscape: byteOrientation = c_oAscPageOrientation.PageLandscape;break;
|
||
}
|
||
if(null != byteOrientation)
|
||
oPageSetup.asc_setOrientation(byteOrientation);
|
||
}
|
||
else if ( c_oSer_PageSetup.PaperSize == type )
|
||
{
|
||
var bytePaperSize = this.stream.GetUChar();
|
||
var item = DocumentPageSize.getSizeById(bytePaperSize);
|
||
oPageSetup.asc_setWidth(item.w_mm);
|
||
oPageSetup.asc_setHeight(item.h_mm);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPrintOptions = function(type, length, oPrintOptions)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSer_PrintOptions.GridLines == type )
|
||
oPrintOptions.asc_setGridLines(this.stream.GetBool());
|
||
else if ( c_oSer_PrintOptions.Headings == type )
|
||
oPrintOptions.asc_setHeadings(this.stream.GetBool());
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadHyperlinks = function(type, length, ws)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Hyperlink == type )
|
||
{
|
||
var oNewHyperlink = new Hyperlink();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadHyperlink(t,l, ws, oNewHyperlink);
|
||
});
|
||
this.aHyperlinks.push(oNewHyperlink);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadHyperlink = function(type, length, ws, oHyperlink)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerHyperlinkTypes.Ref == type )
|
||
oHyperlink.Ref = ws.getRange2(this.stream.GetString2LE(length));
|
||
else if ( c_oSerHyperlinkTypes.Hyperlink == type )
|
||
oHyperlink.Hyperlink = this.stream.GetString2LE(length);
|
||
else if ( c_oSerHyperlinkTypes.Location == type )
|
||
oHyperlink.Location = this.stream.GetString2LE(length);
|
||
else if ( c_oSerHyperlinkTypes.Tooltip == type )
|
||
oHyperlink.Tooltip = this.stream.GetString2LE(length);
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadMergeCells = function(type, length, ws)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.MergeCell == type )
|
||
{
|
||
this.aMerged.push(this.stream.GetString2LE(length));
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadSheetData = function(type, length, ws)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Row == type )
|
||
{
|
||
var oNewRow = new Row(ws);
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadRow(t,l, oNewRow, ws);
|
||
});
|
||
if(null != oNewRow.r)
|
||
ws.aGCells[oNewRow.r - 1] = oNewRow;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadRow = function(type, length, oRow, ws)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerRowTypes.Row == type )
|
||
{
|
||
oRow.r = this.stream.GetULongLE();
|
||
oRow.index = oRow.r - 1;
|
||
if(oRow.r > ws.nRowsCount)
|
||
ws.nRowsCount = oRow.r;
|
||
}
|
||
else if ( c_oSerRowTypes.Style == type )
|
||
{
|
||
var xfs = this.aCellXfs[this.stream.GetULongLE()];
|
||
if(null != xfs)
|
||
oRow.xfs = xfs.clone();
|
||
}
|
||
else if ( c_oSerRowTypes.Height == type )
|
||
{
|
||
oRow.h = this.stream.GetDoubleLE();
|
||
if(g_nCurFileVersion < 2)
|
||
oRow.CustomHeight = true;
|
||
}
|
||
else if ( c_oSerRowTypes.CustomHeight == type )
|
||
oRow.CustomHeight = this.stream.GetBool();
|
||
else if ( c_oSerRowTypes.Hidden == type )
|
||
oRow.hd = this.stream.GetBool();
|
||
else if ( c_oSerRowTypes.Cells == type )
|
||
{
|
||
if(null == oRow.Cells)
|
||
oRow.c = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCells(t,l, ws, oRow.c);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCells = function(type, length, ws, aCells)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerRowTypes.Cell == type )
|
||
{
|
||
var oNewCell = new Cell(ws);
|
||
var oCellVal = {val: null};
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCell(t,l, ws, oNewCell, oCellVal);
|
||
});
|
||
if(null != oNewCell.oId)
|
||
{
|
||
var nCellCol = 0;
|
||
//вычисляем nColsCount
|
||
if(null != oNewCell)
|
||
{
|
||
var nCols = oNewCell.oId.getCol();
|
||
nCellCol = nCols - 1;
|
||
if(nCols > ws.nColsCount)
|
||
ws.nColsCount = nCols;
|
||
}
|
||
if(null != oCellVal.val)
|
||
{
|
||
var bText = false;
|
||
if(CellValueType.String == oNewCell.oValue.type || CellValueType.Error == oNewCell.oValue.type)
|
||
{
|
||
var ss = this.aSharedStrings[oCellVal.val];
|
||
if(null != ss)
|
||
{
|
||
bText = true;
|
||
var nType = oNewCell.oValue.type;
|
||
oNewCell.oValue = ss.clone(oNewCell);
|
||
oNewCell.oValue.type = nType;
|
||
}
|
||
}
|
||
//todo убрать to string
|
||
if(false == bText)
|
||
oNewCell.oValue.number = oCellVal.val;
|
||
}
|
||
aCells[nCellCol] = oNewCell;
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCell = function(type, length, ws, oCell, oCellVal)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerCellTypes.Ref == type )
|
||
oCell.oId = new CellAddress(this.stream.GetString2LE(length));
|
||
else if( c_oSerCellTypes.Style == type )
|
||
{
|
||
var nStyleIndex = this.stream.GetULongLE();
|
||
if(0 != nStyleIndex)
|
||
{
|
||
var xfs = this.aCellXfs[nStyleIndex];
|
||
if(null != xfs)
|
||
oCell.xfs = xfs.clone();
|
||
}
|
||
}
|
||
else if( c_oSerCellTypes.Type == type )
|
||
{
|
||
switch(this.stream.GetUChar())
|
||
{
|
||
case ECellTypeType.celltypeBool: oCell.oValue.type = CellValueType.Bool;break;
|
||
case ECellTypeType.celltypeError: oCell.oValue.type = CellValueType.Error;break;
|
||
case ECellTypeType.celltypeNumber: oCell.oValue.type = CellValueType.Number;break;
|
||
case ECellTypeType.celltypeSharedString: oCell.oValue.type = CellValueType.String;break;
|
||
};
|
||
}
|
||
else if( c_oSerCellTypes.Formula == type )
|
||
{
|
||
if(null == oCell.oFormulaExt)
|
||
oCell.oFormulaExt = {aca: null, bx: null, ca: null, del1: null, del2: null, dt2d: null, dtr: null, r1: null, r2: null, si: null, t: null, v: null};
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadFormula(t,l, oCell.oFormulaExt);
|
||
});
|
||
}
|
||
else if( c_oSerCellTypes.Value == type )
|
||
{
|
||
oCellVal.val = this.stream.GetDoubleLE();
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadFormula = function(type, length, oFormula)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSerFormulaTypes.Aca == type )
|
||
oFormula.aca = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Bx == type )
|
||
oFormula.bx = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Ca == type )
|
||
oFormula.ca = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Del1 == type )
|
||
oFormula.del1 = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Del2 == type )
|
||
oFormula.del2 = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Dt2D == type )
|
||
oFormula.dt2d = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.Dtr == type )
|
||
oFormula.dtr = this.stream.GetBool();
|
||
else if ( c_oSerFormulaTypes.R1 == type )
|
||
oFormula.r1 = this.stream.GetString2LE(length);
|
||
else if ( c_oSerFormulaTypes.R2 == type )
|
||
oFormula.r2 = this.stream.GetString2LE(length);
|
||
else if ( c_oSerFormulaTypes.Ref == type )
|
||
oFormula.ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSerFormulaTypes.Si == type )
|
||
oFormula.si = this.stream.GetULongLE();
|
||
else if ( c_oSerFormulaTypes.T == type )
|
||
oFormula.t = this.stream.GetUChar();
|
||
else if ( c_oSerFormulaTypes.Text == type )
|
||
oFormula.v = this.stream.GetString2LE(length);
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDrawings = function(type, length, aDrawings, wsId)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Drawing == type )
|
||
{
|
||
var objectRender = new DrawingObjects();
|
||
var oFlags = {from: false, to: false, pos: false, ext: false};
|
||
var oNewDrawing = objectRender.createDrawingObject();
|
||
oNewDrawing.id = "sheet" + wsId + "_" + (aDrawings.length + 1);
|
||
res = this.bcr.Read1(length, function(t, l) {
|
||
return oThis.ReadDrawing(t, l, oNewDrawing, oFlags);
|
||
});
|
||
if(false != oFlags.from && false != oFlags.to)
|
||
oNewDrawing.Type = ECellAnchorType.cellanchorTwoCell;
|
||
else if(false != oFlags.from && false != oFlags.ext)
|
||
oNewDrawing.Type = ECellAnchorType.cellanchorOneCell;
|
||
else if(false != oFlags.pos && false != oFlags.ext)
|
||
oNewDrawing.Type = ECellAnchorType.cellanchorAbsolute;
|
||
aDrawings.push(oNewDrawing);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadDrawing = function(type, length, oDrawing, oFlags)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DrawingType.Type == type )
|
||
oDrawing.Type = this.stream.GetUChar();
|
||
else if ( c_oSer_DrawingType.From == type )
|
||
{
|
||
oFlags.from = true;
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadFromTo(t,l, oDrawing.from);
|
||
});
|
||
}
|
||
else if ( c_oSer_DrawingType.To == type )
|
||
{
|
||
oFlags.to = true;
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadFromTo(t,l, oDrawing.to);
|
||
});
|
||
}
|
||
else if ( c_oSer_DrawingType.Pos == type )
|
||
{
|
||
oFlags.pos = true;
|
||
if(null == oDrawing.Pos)
|
||
oDrawing.Pos = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadPos(t,l, oDrawing.Pos);
|
||
});
|
||
}
|
||
else if ( c_oSer_DrawingType.Ext == type )
|
||
{
|
||
oFlags.ext = true;
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadExt(t,l, oDrawing.ext);
|
||
});
|
||
}
|
||
else if ( c_oSer_DrawingType.Pic == type )
|
||
{
|
||
oDrawing.image = new Image();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
//return oThis.ReadPic(t,l, oDrawing.Pic);
|
||
return oThis.ReadPic(t,l, oDrawing);
|
||
});
|
||
}
|
||
else if ( c_oSer_DrawingType.GraphicFrame == type )
|
||
{
|
||
var oBinary_ChartReader = new Binary_ChartReader(this.stream, oDrawing.chart);
|
||
res = oBinary_ChartReader.Read(length);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadFromTo = function(type, length, oFromTo)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DrawingFromToType.Col == type )
|
||
//oFromTo.Col = this.stream.GetULongLE();
|
||
oFromTo.col = this.stream.GetULongLE();
|
||
else if ( c_oSer_DrawingFromToType.ColOff == type )
|
||
//oFromTo.ColOff = this.stream.GetDoubleLE();
|
||
oFromTo.colOff = this.stream.GetDoubleLE();
|
||
else if ( c_oSer_DrawingFromToType.Row == type )
|
||
//oFromTo.Row = this.stream.GetULongLE();
|
||
oFromTo.row = this.stream.GetULongLE();
|
||
else if ( c_oSer_DrawingFromToType.RowOff == type )
|
||
//oFromTo.RowOff = this.stream.GetDoubleLE();
|
||
oFromTo.rowOff = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPos = function(type, length, oPos)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DrawingPosType.X == type )
|
||
oPos.X = this.stream.GetDoubleLE();
|
||
else if ( c_oSer_DrawingPosType.Y == type )
|
||
oPos.Y = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadExt = function(type, length, oExt)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DrawingExtType.Cx == type )
|
||
oExt.cx = this.stream.GetDoubleLE();
|
||
else if ( c_oSer_DrawingExtType.Cy == type )
|
||
oExt.cy = this.stream.GetDoubleLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadPic = function(type, length, oDrawing)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_DrawingType.PicSrc == type )
|
||
{
|
||
var nIndex = this.stream.GetULongLE();
|
||
var src = this.oMediaArray[nIndex];
|
||
if(null != src)
|
||
{
|
||
if (window['scriptBridge']) {
|
||
oDrawing.image.src = window['scriptBridge']['workPath']() + src;
|
||
oDrawing.imageUrl = window['scriptBridge']['workPath']() + src;
|
||
} else {
|
||
oDrawing.image.src = src;
|
||
oDrawing.imageUrl = src;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadComments = function(type, length, oWorksheet)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSerWorksheetsTypes.Comment == type )
|
||
{
|
||
var oCommentCoords = new Asc.asc_CCommentCoords();
|
||
var aCommentData = new Array();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadComment(t,l, oCommentCoords, aCommentData);
|
||
});
|
||
//todo проверка
|
||
for(var i = 0, length = aCommentData.length; i < length; ++i)
|
||
{
|
||
var elem = aCommentData[i];
|
||
elem.asc_putRow(oCommentCoords.asc_getRow());
|
||
elem.asc_putCol(oCommentCoords.asc_getCol());
|
||
|
||
elem.wsId = oWorksheet.Id;
|
||
if (elem.asc_getDocumentFlag())
|
||
elem.nId = "doc_" + (oWorksheet.aComments.length + 1);
|
||
else
|
||
elem.nId = "sheet" + elem.wsId + "_" + (oWorksheet.aComments.length + 1);
|
||
|
||
oWorksheet.aComments.push(elem);
|
||
}
|
||
oWorksheet.aCommentsCoords.push(oCommentCoords);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.ReadComment = function(type, length, oCommentCoords, aCommentData)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_Comments.Row == type )
|
||
oCommentCoords.asc_setRow(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.Col == type )
|
||
oCommentCoords.asc_setCol(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.CommentDatas == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCommentDatas(t,l, aCommentData);
|
||
});
|
||
}
|
||
else if ( c_oSer_Comments.Left == type )
|
||
oCommentCoords.asc_setLeft(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.LeftOffset == type )
|
||
oCommentCoords.asc_setLeftOffset(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.Top == type )
|
||
oCommentCoords.asc_setTop(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.TopOffset == type )
|
||
oCommentCoords.asc_setTopOffset(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.Right == type )
|
||
oCommentCoords.asc_setRight(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.RightOffset == type )
|
||
oCommentCoords.asc_setRightOffset(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.Bottom == type )
|
||
oCommentCoords.asc_setBottom(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.BottomOffset == type )
|
||
oCommentCoords.asc_setBottomOffset(this.stream.GetULongLE());
|
||
else if ( c_oSer_Comments.LeftMM == type )
|
||
oCommentCoords.asc_setLeftMM(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_Comments.TopMM == type )
|
||
oCommentCoords.asc_setTopMM(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_Comments.WidthMM == type )
|
||
oCommentCoords.asc_setWidthMM(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_Comments.HeightMM == type )
|
||
oCommentCoords.asc_setHeightMM(this.stream.GetDoubleLE());
|
||
else if ( c_oSer_Comments.MoveWithCells == type )
|
||
oCommentCoords.asc_setMoveWithCells(this.stream.GetBool());
|
||
else if ( c_oSer_Comments.SizeWithCells == type )
|
||
oCommentCoords.asc_setSizeWithCells(this.stream.GetBool());
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCommentDatas = function(type, length, aCommentData)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_Comments.CommentData === type )
|
||
{
|
||
var oCommentData = new Asc.asc_CCommentData();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCommentData(t,l,oCommentData);
|
||
});
|
||
aCommentData.push(oCommentData);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCommentData = function(type, length, oCommentData)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CommentData.Text == type )
|
||
oCommentData.asc_putText(this.stream.GetString2LE(length));
|
||
else if ( c_oSer_CommentData.Time == type )
|
||
{
|
||
var oDate = this.Iso8601ToDate(this.stream.GetString2LE(length));
|
||
if(null != oDate)
|
||
oCommentData.asc_putTime(oDate.getTime() + "");
|
||
}
|
||
else if ( c_oSer_CommentData.UserId == type )
|
||
oCommentData.asc_putUserId(this.stream.GetString2LE(length));
|
||
else if ( c_oSer_CommentData.UserName == type )
|
||
oCommentData.asc_putUserName(this.stream.GetString2LE(length));
|
||
else if ( c_oSer_CommentData.QuoteText == type )
|
||
{
|
||
var sQuoteText = this.stream.GetString2LE(length);
|
||
}
|
||
else if ( c_oSer_CommentData.Replies == type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadReplies(t,l, oCommentData);
|
||
});
|
||
}
|
||
else if ( c_oSer_CommentData.Solved == type )
|
||
{
|
||
var bSolved = this.stream.GetBool();
|
||
}
|
||
else if ( c_oSer_CommentData.Document == type )
|
||
oCommentData.asc_putDocumentFlag(this.stream.GetBool());
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
this.Iso8601ToDate = function(sDate)
|
||
{
|
||
var numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ];
|
||
var minutesOffset = 0;
|
||
if ((struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(sDate))) {
|
||
// avoid NaN timestamps caused by “undefined” values being passed to Date.UTC
|
||
for (var i = 0, k; (k = numericKeys[i]); ++i) {
|
||
struct[k] = +struct[k] || 0;
|
||
}
|
||
|
||
// allow undefined days and months
|
||
struct[2] = (+struct[2] || 1) - 1;
|
||
struct[3] = +struct[3] || 1;
|
||
|
||
if (struct[8] !== 'Z' && struct[9] !== undefined) {
|
||
minutesOffset = struct[10] * 60 + struct[11];
|
||
|
||
if (struct[9] === '+') {
|
||
minutesOffset = 0 - minutesOffset;
|
||
}
|
||
}
|
||
|
||
return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]));
|
||
}
|
||
return null
|
||
};
|
||
this.ReadReplies = function(type, length, oCommentData)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CommentData.Reply === type )
|
||
{
|
||
var oReplyData = new Asc.asc_CCommentData();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadCommentData(t,l,oReplyData);
|
||
});
|
||
oCommentData.aReplies.push(oReplyData);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function Binary_CalcChainTableReader(stream, aCalcChain)
|
||
{
|
||
this.stream = stream;
|
||
this.aCalcChain = aCalcChain;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
return this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadCalcChainContent(t,l);
|
||
});
|
||
};
|
||
this.ReadCalcChainContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_CalcChainType.CalcChainItem === type )
|
||
{
|
||
var oNewCalcChain = new Object();
|
||
res = this.bcr.Read2Spreadsheet(length, function(t,l){
|
||
return oThis.ReadCalcChain(t,l, oNewCalcChain);
|
||
});
|
||
this.aCalcChain.push(oNewCalcChain);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadCalcChain = function(type, length, oCalcChain)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSer_CalcChainType.Array == type )
|
||
oCalcChain.Array = this.stream.GetBool();
|
||
else if ( c_oSer_CalcChainType.SheetId == type )
|
||
oCalcChain.SheetId = this.stream.GetULongLE();
|
||
else if ( c_oSer_CalcChainType.DependencyLevel == type )
|
||
oCalcChain.DependencyLevel = this.stream.GetBool();
|
||
else if ( c_oSer_CalcChainType.Ref == type )
|
||
oCalcChain.Ref = this.stream.GetString2LE(length);
|
||
else if ( c_oSer_CalcChainType.ChildChain == type )
|
||
oCalcChain.ChildChain = this.stream.GetBool();
|
||
else if ( c_oSer_CalcChainType.NewThread == type )
|
||
oCalcChain.NewThread = this.stream.GetBool();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function Binary_OtherTableReader(stream, oMedia, sUrlPath, wb)
|
||
{
|
||
this.stream = stream;
|
||
this.oMedia = oMedia;
|
||
this.sUrlPath = sUrlPath;
|
||
this.wb = wb;
|
||
this.bcr = new Binary_CommonReader(this.stream);
|
||
this.Read = function()
|
||
{
|
||
var oThis = this;
|
||
var oRes = this.bcr.ReadTable(function(t, l){
|
||
return oThis.ReadOtherContent(t,l);
|
||
});
|
||
return oRes;
|
||
};
|
||
this.ReadOtherContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_OtherType.Media === type )
|
||
{
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadMediaContent(t,l);
|
||
});
|
||
}
|
||
else if ( c_oSer_OtherType.EmbeddedFonts === type )
|
||
{
|
||
var _count = this.stream.GetULongLE();
|
||
var _embedded_fonts = new Array();
|
||
for (var i = 0; i < _count; i++)
|
||
{
|
||
var _at = this.stream.GetUChar();
|
||
if (_at != g_nodeAttributeStart)
|
||
break;
|
||
|
||
var _f_i = new Object();
|
||
|
||
while (true)
|
||
{
|
||
_at = this.stream.GetUChar();
|
||
if (_at == g_nodeAttributeEnd)
|
||
break;
|
||
|
||
switch (_at)
|
||
{
|
||
case 0:
|
||
{
|
||
_f_i.Name = this.stream.GetString();
|
||
break;
|
||
}
|
||
case 1:
|
||
{
|
||
_f_i.Style = this.stream.GetULongLE();
|
||
break;
|
||
}
|
||
case 2:
|
||
{
|
||
_f_i.IsCut = this.stream.GetBool();
|
||
break;
|
||
}
|
||
case 3:
|
||
{
|
||
_f_i.IndexCut = this.stream.GetULongLE();
|
||
break;
|
||
}
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
_embedded_fonts.push(_f_i);
|
||
}
|
||
var api = this.wb.oApi;
|
||
if(true == api.isUseEmbeddedCutFonts)
|
||
{
|
||
var font_cuts = api.FontLoader.embedded_cut_manager;
|
||
font_cuts.Url = this.sUrlPath + "fonts/fonts.js";
|
||
font_cuts.init_cut_fonts(_embedded_fonts);
|
||
font_cuts.bIsCutFontsUse = true;
|
||
}
|
||
}
|
||
else if ( c_oSer_OtherType.Theme === type )
|
||
{
|
||
this.wb.theme = window.global_pptx_content_loader.ReadTheme(this, this.stream);
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadMediaContent = function(type, length)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
var oThis = this;
|
||
if ( c_oSer_OtherType.MediaItem === type )
|
||
{
|
||
var oNewMedia = new Object();
|
||
res = this.bcr.Read1(length, function(t,l){
|
||
return oThis.ReadMediaItem(t,l, oNewMedia);
|
||
});
|
||
if(null != oNewMedia.id && null != oNewMedia.src)
|
||
this.oMedia[oNewMedia.id] = oNewMedia.src;
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
this.ReadMediaItem = function(type, length, oNewMedia)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( c_oSer_OtherType.MediaSrc === type )
|
||
{
|
||
var src = this.stream.GetString2LE(length);
|
||
if(0 != src.indexOf("http:") && 0 != src.indexOf("data:") && 0 != src.indexOf("https:") && 0 != src.indexOf("ftp:") && 0 != src.indexOf("file:"))
|
||
oNewMedia.src = this.sUrlPath + "media/" + src;
|
||
else
|
||
oNewMedia.src = src;
|
||
}
|
||
else if ( c_oSer_OtherType.MediaId === type )
|
||
oNewMedia.id = this.stream.GetULongLE();
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
};
|
||
/** @constructor */
|
||
function BinaryFileReader(sUrlPath)
|
||
{
|
||
this.stream;
|
||
this.sUrlPath = sUrlPath;
|
||
this.getbase64DecodedData = function(szSrc, stream)
|
||
{
|
||
var nType = 0;
|
||
var index = c_oSerFormat.Signature.length;
|
||
var version = "";
|
||
var dst_len = "";
|
||
while (true)
|
||
{
|
||
index++;
|
||
var _c = szSrc.charCodeAt(index);
|
||
if (_c == ";".charCodeAt(0))
|
||
{
|
||
|
||
if(0 == nType)
|
||
{
|
||
nType = 1;
|
||
continue;
|
||
}
|
||
else
|
||
{
|
||
index++;
|
||
break;
|
||
}
|
||
}
|
||
if(0 == nType)
|
||
version += String.fromCharCode(_c);
|
||
else
|
||
dst_len += String.fromCharCode(_c);
|
||
}
|
||
|
||
var dstLen = parseInt(dst_len);
|
||
var pointer = g_memory.Alloc(dstLen);
|
||
stream = new FT_Stream2(pointer.data, dstLen);
|
||
stream.obj = pointer.obj;
|
||
|
||
this.getbase64DecodedData2(szSrc, index, stream, 0);
|
||
|
||
if(version.length > 1)
|
||
{
|
||
var nTempVersion = version.substring(1) - 0;
|
||
if(nTempVersion)
|
||
g_nCurFileVersion = nTempVersion;
|
||
}
|
||
return stream;
|
||
};
|
||
this.getbase64DecodedData2 = function(szSrc, szSrcOffset, stream, streamOffset)
|
||
{
|
||
var srcLen = szSrc.length;
|
||
var nWritten = streamOffset;
|
||
var dstPx = stream.data;
|
||
var index = szSrcOffset;
|
||
|
||
if (window.chrome)
|
||
{
|
||
while (index < srcLen)
|
||
{
|
||
var dwCurr = 0;
|
||
var i;
|
||
var nBits = 0;
|
||
for (i=0; i<4; i++)
|
||
{
|
||
if (index >= srcLen)
|
||
break;
|
||
var nCh = DecodeBase64Char(szSrc.charCodeAt(index++));
|
||
if (nCh == -1)
|
||
{
|
||
i--;
|
||
continue;
|
||
}
|
||
dwCurr <<= 6;
|
||
dwCurr |= nCh;
|
||
nBits += 6;
|
||
}
|
||
|
||
dwCurr <<= 24-nBits;
|
||
var nLen = (nBits/8) | 0;
|
||
for (i=0; i<nLen; i++)
|
||
{
|
||
dstPx[nWritten++] = ((dwCurr & 0x00ff0000) >>> 16);
|
||
dwCurr <<= 8;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var p = b64_decode;
|
||
while (index < srcLen)
|
||
{
|
||
var dwCurr = 0;
|
||
var i;
|
||
var nBits = 0;
|
||
for (i=0; i<4; i++)
|
||
{
|
||
if (index >= srcLen)
|
||
break;
|
||
var nCh = p[szSrc.charCodeAt(index++)];
|
||
if (nCh == undefined)
|
||
{
|
||
i--;
|
||
continue;
|
||
}
|
||
dwCurr <<= 6;
|
||
dwCurr |= nCh;
|
||
nBits += 6;
|
||
}
|
||
|
||
dwCurr <<= 24-nBits;
|
||
var nLen = (nBits/8) | 0;
|
||
for (i=0; i<nLen; i++)
|
||
{
|
||
dstPx[nWritten++] = ((dwCurr & 0x00ff0000) >>> 16);
|
||
dwCurr <<= 8;
|
||
}
|
||
}
|
||
}
|
||
return nWritten;
|
||
}
|
||
this.Read = function(data, wb)
|
||
{
|
||
this.stream = this.getbase64DecodedData(data);
|
||
History.TurnOff();
|
||
this.ReadFile(wb);
|
||
History.TurnOn();
|
||
|
||
ReadDefTableStyles(wb, wb.TableStyles.DefaultStyles);
|
||
wb.TableStyles.concatStyles();
|
||
};
|
||
this.ReadFile = function(wb)
|
||
{
|
||
return this.ReadMainTable(wb);
|
||
};
|
||
this.ReadMainTable = function(wb)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
//mtLen
|
||
res = this.stream.EnterFrame(1);
|
||
if(c_oSerConstants.ReadOk != res)
|
||
return res;
|
||
var mtLen = this.stream.GetUChar();
|
||
var aSeekTable = new Array();
|
||
var nOtherTableOffset = null;
|
||
var nSharedStringTableOffset = null;
|
||
var nStyleTableOffset = null;
|
||
var nWorkbookTableOffset = null;
|
||
for(var i = 0; i < mtLen; ++i)
|
||
{
|
||
//mtItem
|
||
res = this.stream.EnterFrame(5);
|
||
if(c_oSerConstants.ReadOk != res)
|
||
return res;
|
||
var mtiType = this.stream.GetUChar();
|
||
var mtiOffBits = this.stream.GetULongLE();
|
||
if(c_oSerTableTypes.Other == mtiType)
|
||
nOtherTableOffset = mtiOffBits;
|
||
else if(c_oSerTableTypes.SharedStrings == mtiType)
|
||
nSharedStringTableOffset = mtiOffBits;
|
||
else if(c_oSerTableTypes.Styles == mtiType)
|
||
nStyleTableOffset = mtiOffBits;
|
||
else if(c_oSerTableTypes.Workbook == mtiType)
|
||
nWorkbookTableOffset = mtiOffBits;
|
||
else
|
||
aSeekTable.push( {type: mtiType, offset: mtiOffBits} );
|
||
}
|
||
var aSharedStrings = new Array();
|
||
var aCellXfs = new Array();
|
||
var aDxfs = new Array();
|
||
var oMediaArray = new Object();
|
||
wb.aWorksheets = new Array();
|
||
if(null != nOtherTableOffset)
|
||
{
|
||
res = this.stream.Seek(nOtherTableOffset);
|
||
if(c_oSerConstants.ReadOk == res)
|
||
res = (new Binary_OtherTableReader(this.stream, oMediaArray, this.sUrlPath, wb)).Read();
|
||
}
|
||
if(null != nSharedStringTableOffset)
|
||
{
|
||
res = this.stream.Seek(nSharedStringTableOffset);
|
||
if(c_oSerConstants.ReadOk == res)
|
||
res = (new Binary_SharedStringTableReader(this.stream, wb, aSharedStrings)).Read();
|
||
}
|
||
if(null != nStyleTableOffset)
|
||
{
|
||
res = this.stream.Seek(nStyleTableOffset);
|
||
if(c_oSerConstants.ReadOk == res)
|
||
res = (new Binary_StylesTableReader(this.stream, wb, aCellXfs, aDxfs)).Read();
|
||
}
|
||
if(c_oSerConstants.ReadOk == res)
|
||
{
|
||
for(var i = 0; i < aSeekTable.length; ++i)
|
||
{
|
||
var seek = aSeekTable[i];
|
||
var mtiType = seek.type;
|
||
var mtiOffBits = seek.offset;
|
||
res = this.stream.Seek(mtiOffBits);
|
||
if(c_oSerConstants.ReadOk != res)
|
||
break;
|
||
switch(mtiType)
|
||
{
|
||
// case c_oSerTableTypes.SharedStrings:
|
||
// res = (new Binary_SharedStringTableReader(this.stream, aSharedStrings)).Read();
|
||
// break;
|
||
// case c_oSerTableTypes.Styles:
|
||
// res = (new Binary_StylesTableReader(this.stream, wb.oStyleManager, aCellXfs)).Read();
|
||
// break;
|
||
// case c_oSerTableTypes.Workbook:
|
||
// res = (new Binary_WorkbookTableReader(this.stream, wb)).Read();
|
||
// break;
|
||
case c_oSerTableTypes.Worksheets:
|
||
res = (new Binary_WorksheetTableReader(this.stream, wb, aSharedStrings, aCellXfs, aDxfs, oMediaArray)).Read();
|
||
break;
|
||
case c_oSerTableTypes.CalcChain:
|
||
res = (new Binary_CalcChainTableReader(this.stream, wb.calcChain)).Read();
|
||
break;
|
||
// case c_oSerTableTypes.Other:
|
||
// res = (new Binary_OtherTableReader(this.stream, oMediaArray)).Read();
|
||
// break;
|
||
}
|
||
if(c_oSerConstants.ReadOk != res)
|
||
break;
|
||
}
|
||
}
|
||
if(null != nWorkbookTableOffset)
|
||
{
|
||
res = this.stream.Seek(nWorkbookTableOffset);
|
||
if(c_oSerConstants.ReadOk == res)
|
||
res = (new Binary_WorkbookTableReader(this.stream, wb)).Read();
|
||
}
|
||
wb.init();
|
||
return res;
|
||
};
|
||
};
|
||
function CTableStyles()
|
||
{
|
||
this.DefaultTableStyle = "TableStyleMedium2";
|
||
this.DefaultPivotStyle = "PivotStyleLight16";
|
||
this.CustomStyles = new Object();
|
||
this.DefaultStyles = new Object();
|
||
this.AllStyles = new Object();
|
||
}
|
||
CTableStyles.prototype =
|
||
{
|
||
concatStyles : function()
|
||
{
|
||
for(var i in this.DefaultStyles)
|
||
this.AllStyles[i] = this.DefaultStyles[i];
|
||
for(var i in this.CustomStyles)
|
||
this.AllStyles[i] = this.CustomStyles[i];
|
||
},
|
||
rebuildColors : function(theme)
|
||
{
|
||
for(var i in this.AllStyles)
|
||
this.AllStyles[i].rebuildColors(theme);
|
||
}
|
||
}
|
||
function CTableStyle()
|
||
{
|
||
this.name = null;
|
||
this.pivot = false;
|
||
this.table = null;
|
||
|
||
this.blankRow = null;
|
||
this.firstColumn = null;
|
||
this.firstColumnStripe = null;
|
||
this.firstColumnSubheading = null;
|
||
this.firstHeaderCell = null;
|
||
this.firstRowStripe = null;
|
||
this.firstRowSubheading = null;
|
||
this.firstSubtotalColumn = null;
|
||
this.firstSubtotalRow = null;
|
||
this.firstTotalCell = null;
|
||
this.headerRow = null;
|
||
this.lastColumn = null;
|
||
this.lastHeaderCell = null;
|
||
this.lastTotalCell = null;
|
||
this.pageFieldLabels = null;
|
||
this.pageFieldValues = null;
|
||
this.secondColumnStripe = null;
|
||
this.secondColumnSubheading = null;
|
||
this.secondRowStripe = null;
|
||
this.secondRowSubheading = null;
|
||
this.secondSubtotalColumn = null;
|
||
this.secondSubtotalRow = null;
|
||
this.thirdColumnSubheading = null;
|
||
this.thirdRowSubheading = null;
|
||
this.thirdSubtotalColumn = null;
|
||
this.thirdSubtotalRow = null;
|
||
this.totalRow = null;
|
||
this.wholeTable = null;
|
||
}
|
||
CTableStyle.prototype =
|
||
{
|
||
rebuildColors : function(theme)
|
||
{
|
||
if(null != this.blankRow)
|
||
this.blankRow.rebuildColors(theme);
|
||
if(null != this.firstColumn)
|
||
this.firstColumn.rebuildColors(theme);
|
||
if(null != this.firstColumnStripe)
|
||
this.firstColumnStripe.rebuildColors(theme);
|
||
if(null != this.firstColumnSubheading)
|
||
this.firstColumnSubheading.rebuildColors(theme);
|
||
if(null != this.firstHeaderCell)
|
||
this.firstHeaderCell.rebuildColors(theme);
|
||
if(null != this.firstRowStripe)
|
||
this.firstRowStripe.rebuildColors(theme);
|
||
if(null != this.firstRowSubheading)
|
||
this.firstRowSubheading.rebuildColors(theme);
|
||
if(null != this.firstSubtotalColumn)
|
||
this.firstSubtotalColumn.rebuildColors(theme);
|
||
if(null != this.firstSubtotalRow)
|
||
this.firstSubtotalRow.rebuildColors(theme);
|
||
if(null != this.firstTotalCell)
|
||
this.firstTotalCell.rebuildColors(theme);
|
||
if(null != this.headerRow)
|
||
this.headerRow.rebuildColors(theme);
|
||
if(null != this.lastColumn)
|
||
this.lastColumn.rebuildColors(theme);
|
||
if(null != this.lastHeaderCell)
|
||
this.lastHeaderCell.rebuildColors(theme);
|
||
if(null != this.lastTotalCell)
|
||
this.lastTotalCell.rebuildColors(theme);
|
||
if(null != this.pageFieldLabels)
|
||
this.pageFieldLabels.rebuildColors(theme);
|
||
if(null != this.pageFieldValues)
|
||
this.pageFieldValues.rebuildColors(theme);
|
||
if(null != this.secondColumnStripe)
|
||
this.secondColumnStripe.rebuildColors(theme);
|
||
if(null != this.secondColumnSubheading)
|
||
this.secondColumnSubheading.rebuildColors(theme);
|
||
if(null != this.secondRowStripe)
|
||
this.secondRowStripe.rebuildColors(theme);
|
||
if(null != this.secondRowSubheading)
|
||
this.secondRowSubheading.rebuildColors(theme);
|
||
if(null != this.secondSubtotalColumn)
|
||
this.secondSubtotalColumn.rebuildColors(theme);
|
||
if(null != this.secondSubtotalRow)
|
||
this.secondSubtotalRow.rebuildColors(theme);
|
||
if(null != this.thirdColumnSubheading)
|
||
this.thirdColumnSubheading.rebuildColors(theme);
|
||
if(null != this.thirdRowSubheading)
|
||
this.thirdRowSubheading.rebuildColors(theme);
|
||
if(null != this.thirdSubtotalColumn)
|
||
this.thirdSubtotalColumn.rebuildColors(theme);
|
||
if(null != this.thirdSubtotalRow)
|
||
this.thirdSubtotalRow.rebuildColors(theme);
|
||
if(null != this.totalRow)
|
||
this.totalRow.rebuildColors(theme);
|
||
if(null != this.wholeTable)
|
||
this.wholeTable.rebuildColors(theme);
|
||
}
|
||
}
|
||
function CTableStyleElement()
|
||
{
|
||
this.size = 1;
|
||
this.dxf = null;
|
||
}
|
||
CTableStyleElement.prototype =
|
||
{
|
||
rebuildColors : function(theme)
|
||
{
|
||
if(null != this.dxf)
|
||
{
|
||
if(null != this.dxf.font)
|
||
{
|
||
var font = this.dxf.font;
|
||
if(null != font.themeColor)
|
||
font.c = this.rebuildColor(theme, font);
|
||
}
|
||
if(null != this.dxf.fill)
|
||
{
|
||
var fill = this.dxf.fill;
|
||
if(null != fill.themeColor)
|
||
fill.bg = this.rebuildColor(theme, fill);
|
||
}
|
||
if(null != this.dxf.border)
|
||
{
|
||
var border = this.dxf.border;
|
||
if(null != border.l && null != border.l.themeColor)
|
||
border.l.c = this.rebuildColor(theme, border.l);
|
||
if(null != border.t && null != border.t.themeColor)
|
||
border.t.c = this.rebuildColor(theme, border.t);
|
||
if(null != border.r && null != border.r.themeColor)
|
||
border.r.c = this.rebuildColor(theme, border.r);
|
||
if(null != border.b && null != border.b.themeColor)
|
||
border.b.c = this.rebuildColor(theme, border.b);
|
||
if(null != border.d && null != border.d.themeColor)
|
||
border.d.c = this.rebuildColor(theme, border.d);
|
||
if(null != border.ih && null != border.ih.themeColor)
|
||
border.ih.c = this.rebuildColor(theme, border.ih);
|
||
if(null != border.iv && null != border.iv.themeColor)
|
||
border.iv.c = this.rebuildColor(theme, border.iv);
|
||
}
|
||
}
|
||
},
|
||
rebuildColor : function(theme, val)
|
||
{
|
||
var color = new OpenColor();
|
||
color.theme = val.themeColor;
|
||
color.tint = val.themeTint;
|
||
return color.toRgb(theme);
|
||
}
|
||
}
|
||
function ReadDefTableStyles(wb, oOutput)
|
||
{
|
||
var Types =
|
||
{
|
||
Style: 0,
|
||
Dxf: 1,
|
||
tableStyles: 2
|
||
};
|
||
var sStyles = "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";
|
||
var dstLen = sStyles.length;
|
||
var pointer = g_memory.Alloc(dstLen);
|
||
stream = new FT_Stream2(pointer.data, dstLen);
|
||
stream.obj = pointer.obj;
|
||
|
||
var bcr = new Binary_CommonReader(stream);
|
||
var oBinaryFileReader = new BinaryFileReader("");
|
||
oBinaryFileReader.getbase64DecodedData2(sStyles, 0, stream, 0);
|
||
var oBinary_StylesTableReader = new Binary_StylesTableReader(stream, wb, [], []);
|
||
|
||
var fReadStyle = function(type, length, oTableStyles, oOutputName)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( Types.Dxf == type )
|
||
{
|
||
//потому что в presetTableStyles.xml в отличии от custom стилей, индексы начинаются с 1
|
||
oOutputName.dxfs.push(null);
|
||
res = bcr.Read1(length, function(t,l){
|
||
return oBinary_StylesTableReader.ReadDxfs(t,l,oOutputName.dxfs);
|
||
});
|
||
}
|
||
else if ( Types.tableStyles == type )
|
||
{
|
||
res = bcr.Read1(length, function(t,l){
|
||
return oBinary_StylesTableReader.ReadTableStyles(t,l, oTableStyles, oOutputName.customStyle);
|
||
});
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
}
|
||
var fReadStyles = function(type, length, oOutput)
|
||
{
|
||
var res = c_oSerConstants.ReadOk;
|
||
if ( Types.Style == type )
|
||
{
|
||
var oTableStyles = new CTableStyles();
|
||
var oOutputName = {customStyle: {}, dxfs: []};
|
||
res = bcr.Read1(length, function(t,l){
|
||
return fReadStyle(t,l, oTableStyles, oOutputName);
|
||
});
|
||
for(var i in oOutputName.customStyle)
|
||
{
|
||
var customStyle = oOutputName.customStyle[i];
|
||
var oNewStyle = customStyle.style;
|
||
oBinary_StylesTableReader.initTableStyle(oNewStyle, customStyle.elements, oOutputName.dxfs);
|
||
oOutput[oNewStyle.name] = oNewStyle;
|
||
}
|
||
}
|
||
else
|
||
res = c_oSerConstants.ReadUnknown;
|
||
return res;
|
||
};
|
||
|
||
var length = stream.GetULongLE();
|
||
|
||
res = bcr.Read1(length, function(t,l){
|
||
return fReadStyles(t, l, oOutput);
|
||
});
|
||
} |