|
@@ -79,7 +79,7 @@ function writeApp(sheets, isSinglePage) {
|
|
|
}
|
|
|
function writeCore() {
|
|
|
let rst = [];
|
|
|
- p_fillZero = function(val){
|
|
|
+ let p_fillZero = function(val){
|
|
|
let rst = val;
|
|
|
if (val < 10) {
|
|
|
rst = '0' + val;
|
|
@@ -168,7 +168,7 @@ function writeStyles(stylesObj){
|
|
|
rst.push('<fills count="2"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="gray125" /></fill></fills>');
|
|
|
//3. push borders
|
|
|
rst.push('<borders count="' + stylesObj.borders.length + '">')
|
|
|
- private_setBorder = function(border, borderDirection) {
|
|
|
+ let private_setBorder = function(border, borderDirection) {
|
|
|
if (border[borderDirection][JV.PROP_LINE_WEIGHT] == 0) {
|
|
|
rst.push('<' + borderDirection.toLowerCase() + '/>');
|
|
|
} else {
|
|
@@ -234,7 +234,7 @@ function writeSharedString(sharedStrList){
|
|
|
}
|
|
|
function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage){
|
|
|
let rst = [];
|
|
|
- private_pushDftFont = function(){
|
|
|
+ let private_pushDftFont = function(){
|
|
|
let font = {};
|
|
|
if (!(stylesObj.fonts)) {
|
|
|
stylesObj.fonts = [];
|
|
@@ -245,7 +245,33 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
|
|
|
font.colorIdx = "8";
|
|
|
stylesObj.fonts.push(font);
|
|
|
};
|
|
|
+ let private_buildFirstDftStyle = function () {
|
|
|
+ stylesObj.cellXfs = [];
|
|
|
+ stylesObj.borders = [];
|
|
|
+ let fontId = 0;
|
|
|
+ let borderId = 0;
|
|
|
+ let border = {};
|
|
|
+ border[JV.PROP_LEFT] = {};
|
|
|
+ border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_RIGHT] = {};
|
|
|
+ border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_TOP] = {};
|
|
|
+ border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_BOTTOM] = {};
|
|
|
+ border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ stylesObj.borders.push(border);
|
|
|
+
|
|
|
+ let cellControl = pageData[JV.NODE_CONTROL_COLLECTION].Default;
|
|
|
+ let sheetControl = {};
|
|
|
+ sheetControl.fontId = fontId;
|
|
|
+ sheetControl.borderId = borderId;
|
|
|
+ for (let i = 0; i < JV.CONTROL_PROPS.length; i++) {
|
|
|
+ sheetControl[JV.CONTROL_PROPS[i]] = cellControl[JV.CONTROL_PROPS[i]];
|
|
|
+ }
|
|
|
+ stylesObj.cellXfs.push(sheetControl);
|
|
|
+ }
|
|
|
private_pushDftFont();
|
|
|
+ private_buildFirstDftStyle();
|
|
|
if (isSinglePage) {
|
|
|
rst.push(writeSheet(pageData, null, paperSize, sharedStrList, stylesObj));
|
|
|
} else {
|
|
@@ -258,9 +284,9 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
|
|
|
function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
let rst = [], xPos = [], yPos = [], yMultiPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
let cacheBorderCell = {};
|
|
|
- private_pre_analyze_pos = function(){
|
|
|
+ let private_pre_analyze_pos = function(){
|
|
|
let cell, pos;
|
|
|
- self_analyze_sheet_pos = function (theShtData, theXPos, theYPos) {
|
|
|
+ let self_analyze_sheet_pos = function (theShtData, theXPos, theYPos) {
|
|
|
theShtData.cells.sort(function(cell1, cell2) {
|
|
|
let rst = 0;
|
|
|
if (cell1[JV.PROP_AREA][JV.PROP_TOP] > cell2[JV.PROP_AREA][JV.PROP_TOP]) {
|
|
@@ -308,13 +334,13 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
yPos = yMultiPos[0];
|
|
|
}
|
|
|
};
|
|
|
- private_array_sort = function(i1, i2){
|
|
|
+ let private_array_sort = function(i1, i2){
|
|
|
let rst = 0;
|
|
|
if (i1 > i2) {rst = 1} else
|
|
|
if (i1 < i2) rst = -1;
|
|
|
return rst;
|
|
|
};
|
|
|
- private_getCellIdxStr = function(idx){
|
|
|
+ let private_getCellIdxStr = function(idx){
|
|
|
let rst = 'A';
|
|
|
if (idx < 26) {
|
|
|
rst = headerStr[idx];
|
|
@@ -327,7 +353,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_getSharedStrIdx = function(val) {
|
|
|
+ let private_getSharedStrIdx = function(val) {
|
|
|
let rst = sharedStrList.indexOf(val);
|
|
|
if (rst < 0) {
|
|
|
sharedStrList.push(val);
|
|
@@ -335,7 +361,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_getFontId = function(cell) {
|
|
|
+ let private_getFontId = function(cell) {
|
|
|
let rst = 0, hasFont = false;
|
|
|
if (!(stylesObj.fonts)) {
|
|
|
stylesObj.fonts = [];
|
|
@@ -366,7 +392,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_checkBorder = function(cell, border, sheetBorder) {
|
|
|
+ let private_checkBorder = function(cell, border, sheetBorder) {
|
|
|
let rst = true, borderLineWidths = [], sheetBorderLineWidths = [];
|
|
|
borderLineWidths.push(border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT]);
|
|
|
borderLineWidths.push(border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]);
|
|
@@ -400,7 +426,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr) {
|
|
|
+ let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr) {
|
|
|
let rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT], mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND];
|
|
|
if (cell[JV.PROP_AREA][borderStr] == mergeBorder[borderStr]) {
|
|
|
let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]];
|
|
@@ -408,7 +434,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return parseInt(rst);
|
|
|
};
|
|
|
- private_getIniBorder = function() {
|
|
|
+ let private_getIniBorder = function() {
|
|
|
let rst = {};
|
|
|
rst[JV.PROP_LEFT] = {};
|
|
|
rst[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = 0;
|
|
@@ -420,7 +446,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
rst[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
return rst;
|
|
|
};
|
|
|
- private_getBorderId = function(cell) {
|
|
|
+ let private_getBorderId = function(cell) {
|
|
|
let rst = 0, hasBorder = false;
|
|
|
if (!(stylesObj.borders)) {
|
|
|
stylesObj.borders = [];
|
|
@@ -453,7 +479,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_checkControl = function(cellControl, sheetControl) {
|
|
|
+ let private_checkControl = function(cellControl, sheetControl) {
|
|
|
let rst = true;
|
|
|
for (let i = 0; i < JV.CONTROL_PROPS.length; i++) {
|
|
|
if (cellControl[JV.CONTROL_PROPS[i]] != sheetControl[JV.CONTROL_PROPS[i]]) {
|
|
@@ -463,7 +489,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_getStyleId = function(cell) {
|
|
|
+ let private_getStyleId = function(cell) {
|
|
|
let rst = 1, hasStyle = false;
|
|
|
if (!(stylesObj.cellXfs)) stylesObj.cellXfs = [];
|
|
|
let fontId = private_getFontId(cell);
|
|
@@ -491,7 +517,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_setCols = function(){
|
|
|
+ let private_setCols = function(){
|
|
|
//remark: 1 excel width = 2.117 mm
|
|
|
rst.push('<cols>');
|
|
|
let w = 0;
|
|
@@ -502,11 +528,11 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
rst.push('</cols>');
|
|
|
};
|
|
|
- private_setMergedCells = function() {
|
|
|
+ let private_setMergedCells = function() {
|
|
|
let cell, idxR, idxL, idxT, idxB, cnt = 0;
|
|
|
rst.push('<mergeCells count="?">');
|
|
|
let startIdx = rst.length - 1;
|
|
|
- self_setMergedCells = function (theData, theYPos, offsetY) {
|
|
|
+ let self_setMergedCells = function (theData, theYPos, offsetY) {
|
|
|
for (let i = 0; i < theData.cells.length; i++) {
|
|
|
cell = theData.cells[i];
|
|
|
idxR = xPos.indexOf(cell[JV.PROP_AREA][JV.PROP_RIGHT]);
|
|
@@ -527,13 +553,13 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
let shtItemData = pageData.items[i];
|
|
|
let tmpPos = yMultiPos[i];
|
|
|
self_setMergedCells(shtItemData, tmpPos, osY);
|
|
|
- osY += tmpPos.length;
|
|
|
+ osY += tmpPos.length - 2;
|
|
|
}
|
|
|
}
|
|
|
rst[startIdx] = '<mergeCells count="' + cnt + '">';
|
|
|
rst.push('</mergeCells>');
|
|
|
};
|
|
|
- private_chkIfNeedCacheCell = function(cell){
|
|
|
+ let private_chkIfNeedCacheCell = function(cell){
|
|
|
let rst = false;
|
|
|
if (cell[JV.PROP_AREA][JV.PROP_LEFT] === pageData[JV.BAND_PROP_MERGE_BAND][JV.PROP_LEFT] ||
|
|
|
cell[JV.PROP_AREA][JV.PROP_RIGHT] === pageData[JV.BAND_PROP_MERGE_BAND][JV.PROP_RIGHT] ||
|
|
@@ -548,9 +574,9 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- private_cacheMergeBandBorderIdxs = function() {
|
|
|
+ let private_cacheMergeBandBorderIdxs = function() {
|
|
|
let cell, idxR, idxL, idxT, idxB;
|
|
|
- self_cachMergeIdxs = function (theData, theYPos, offsetY) {
|
|
|
+ let self_cachMergeIdxs = function (theData, theYPos, offsetY) {
|
|
|
for (let i = 0; i < theData.cells.length; i++) {
|
|
|
cell = theData.cells[i];
|
|
|
idxR = xPos.indexOf(cell[JV.PROP_AREA][JV.PROP_RIGHT]);
|
|
@@ -576,91 +602,84 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
let shtItemData = pageData.items[i];
|
|
|
let tmpPos = yMultiPos[i];
|
|
|
self_cachMergeIdxs(shtItemData, tmpPos, osY);
|
|
|
- osY += tmpPos.length;
|
|
|
+ osY += tmpPos.length - 2;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- private_getMergedCellStyleId = function(preStyleId, colIdxStr) {
|
|
|
- let rst = preStyleId;
|
|
|
- if (cacheBorderCell[colIdxStr]) {
|
|
|
- rst = private_getStyleId(cacheBorderCell[colIdxStr]);
|
|
|
- }
|
|
|
- return rst;
|
|
|
- };
|
|
|
- private_setSheetData = function(){
|
|
|
+ let private_setSheetData = function(){
|
|
|
//remark: 1 excel height = 0.3612 mm
|
|
|
rst.push('<sheetData>');
|
|
|
- let spanX = xPos.length - 2, cellIdx = 0, h = 0,
|
|
|
- hasMoreCols = true, nextColIdx = -1,
|
|
|
- nextRowIdx = 0
|
|
|
+ let spanX = xPos.length - 2, cellIdx = 0, h = 0
|
|
|
;
|
|
|
- self_setData = function (theShtData, theYPos, offsetY) {
|
|
|
+ let self_setDataEx = function (theShtData, theYPos, offsetY) {
|
|
|
+ let rows = [];
|
|
|
+ //1. build full set of blank rows/cells
|
|
|
for (let i = 1; i < theYPos.length - 1; i++) {
|
|
|
+ let rowObj = {};
|
|
|
h = (theYPos[i+1] - theYPos[i]) / DPI * 25.4 / 0.3612;
|
|
|
h = Math.round(h * 1000) / 1000;
|
|
|
- rst.push('<row r="' + (i + offsetY) + '" spans="1:' + spanX + '" ht="' + h + '" customHeight="1">');
|
|
|
- let colIdxStr = '';
|
|
|
- hasMoreCols = true;
|
|
|
- while (nextRowIdx < i) {
|
|
|
- if (cellIdx >= theShtData.cells.length || nextRowIdx > i) {
|
|
|
- break;
|
|
|
- } else {
|
|
|
- cellIdx++;
|
|
|
- nextRowIdx = theYPos.indexOf(theShtData.cells[cellIdx][JV.PROP_AREA][JV.PROP_TOP]);
|
|
|
- }
|
|
|
+ rowObj.height = h;
|
|
|
+ rowObj.r = i + offsetY;
|
|
|
+ rowObj.items = [];
|
|
|
+ rows.push(rowObj);
|
|
|
+ for (let j = 1; j < xPos.length - 1; j++) {
|
|
|
+ let colIdxStr = private_getCellIdxStr(j - 1);
|
|
|
+ let cellObj = {};
|
|
|
+ cellObj.r = colIdxStr + (i + offsetY);
|
|
|
+ cellObj.s = 0;
|
|
|
+ cellObj.isBlank = true;
|
|
|
+ rows[i - 1].items.push(cellObj);
|
|
|
}
|
|
|
- if (nextRowIdx > i) {
|
|
|
- hasMoreCols = false;
|
|
|
+ }
|
|
|
+ //2. then fill up the cell style-ids and values
|
|
|
+ let rowIdx1 = 0, colIdx1 = 0, rowIdx2 = 0, colIdx2 = 0, colIdxStr = '';
|
|
|
+ for (let cIdx = 0; cIdx < theShtData.cells.length; cIdx++) {
|
|
|
+ let styleIdx = private_getStyleId(theShtData.cells[cIdx]);
|
|
|
+ //colIdxStr = private_getCellIdxStr(j - 1);
|
|
|
+ rowIdx1 = theYPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_TOP]);
|
|
|
+ colIdx1 = xPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_LEFT]);
|
|
|
+ let cellObj = rows[rowIdx1 - 1].items[colIdx1 - 1];
|
|
|
+ cellObj.s = styleIdx;
|
|
|
+ cellObj.isBlank = false;
|
|
|
+ if (!(strUtil.isEmptyString(theShtData.cells[cIdx][JV.PROP_VALUE]))) {
|
|
|
+ let valIdx = private_getSharedStrIdx(theShtData.cells[cIdx][JV.PROP_VALUE]);
|
|
|
+ cellObj.v = valIdx;
|
|
|
}
|
|
|
- nextColIdx = xPos.indexOf(theShtData.cells[cellIdx][JV.PROP_AREA][JV.PROP_LEFT]);
|
|
|
- let preStyleIdx = 1;
|
|
|
- for (let j = 1; j < xPos.length - 1; j++) {
|
|
|
- colIdxStr = private_getCellIdxStr(j - 1);
|
|
|
- if (hasMoreCols) {
|
|
|
- if (nextColIdx == j) {
|
|
|
- let styleIdx = private_getStyleId(theShtData.cells[cellIdx]);
|
|
|
- preStyleIdx = styleIdx;
|
|
|
- if (strUtil.isEmptyString(theShtData.cells[cellIdx][JV.PROP_VALUE])) {
|
|
|
- rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + styleIdx + '"/>');
|
|
|
- //should setup the right style instead!
|
|
|
- } else {
|
|
|
- let valIdx = private_getSharedStrIdx(theShtData.cells[cellIdx][JV.PROP_VALUE]);
|
|
|
- rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + styleIdx + '" t="s">');
|
|
|
- rst.push('<v>' + valIdx + '</v>');
|
|
|
- rst.push('</c>');
|
|
|
- }
|
|
|
- cellIdx++;
|
|
|
- if (cellIdx < theShtData.cells.length) {
|
|
|
- nextRowIdx = theYPos.indexOf(theShtData.cells[cellIdx][JV.PROP_AREA][JV.PROP_TOP]);
|
|
|
- if (nextRowIdx > i) {
|
|
|
- hasMoreCols = false;
|
|
|
- } else {
|
|
|
- nextColIdx = xPos.indexOf(theShtData.cells[cellIdx][JV.PROP_AREA][JV.PROP_LEFT]);
|
|
|
- }
|
|
|
- } else {
|
|
|
- hasMoreCols = false;
|
|
|
- }
|
|
|
- } else if (nextColIdx < 0) {
|
|
|
- //impossible!
|
|
|
- console.log('has abnormal case!');
|
|
|
- hasMoreCols = false;
|
|
|
- } else {
|
|
|
- //rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + preStyleIdx + '"/>');
|
|
|
- rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + private_getMergedCellStyleId(preStyleIdx, colIdxStr + i + offsetY) + '"/>');
|
|
|
+ rowIdx2 = theYPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_BOTTOM]);
|
|
|
+ colIdx2 = xPos.indexOf(theShtData.cells[cIdx][JV.PROP_AREA][JV.PROP_RIGHT]);
|
|
|
+ if ((rowIdx2 - rowIdx1 > 1) || (colIdx2 - colIdx1 > 1)) {
|
|
|
+ for (let i = 0; i < rowIdx2 - rowIdx1; i++) {
|
|
|
+ for (let j = 0; j < colIdx2 - colIdx1; j++) {
|
|
|
+ if (i === 0 && j === 0) continue;
|
|
|
+ cellObj = rows[rowIdx1 - 1 + i].items[colIdx1 - 1 + j];
|
|
|
+ cellObj.s = styleIdx;
|
|
|
+ cellObj.isBlank = true;
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //3. then fill up rst
|
|
|
+ for (let i = 0; i < rows.length; i++) {
|
|
|
+ rst.push('<row r="' + (i + 1 + offsetY) + '" spans="1:' + spanX + '" ht="' + rows[i].height + '" customHeight="1">');
|
|
|
+ for (let j = 0; j < rows[i].items.length; j++) {
|
|
|
+ let cellObj = rows[i].items[j];
|
|
|
+ if (cellObj.v === undefined) {
|
|
|
+ rst.push('<c r="' + cellObj.r + '" s="' + cellObj.s + '"/>');
|
|
|
} else {
|
|
|
- //rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + preStyleIdx + '"/>');
|
|
|
- rst.push('<c r="' + colIdxStr + (i + offsetY) + '" s="' + private_getMergedCellStyleId(preStyleIdx, colIdxStr + i + offsetY) + '"/>');
|
|
|
+ rst.push('<c r="' + cellObj.r + '" s="' + cellObj.s + '" t="s">');
|
|
|
+ rst.push('<v>' + cellObj.v + '</v>');
|
|
|
+ rst.push('</c>');
|
|
|
}
|
|
|
}
|
|
|
rst.push('</row>');
|
|
|
}
|
|
|
- }
|
|
|
+ //4. maybe need to dispose the memory
|
|
|
+ //...
|
|
|
+ };
|
|
|
private_cacheMergeBandBorderIdxs();
|
|
|
if (sheetData) {
|
|
|
//current sheet data
|
|
|
- nextRowIdx = yPos.indexOf(sheetData.cells[cellIdx][JV.PROP_AREA][JV.PROP_TOP]);
|
|
|
- self_setData(sheetData, yPos, 0);
|
|
|
+ self_setDataEx(sheetData, yPos, 0);
|
|
|
} else {
|
|
|
//total data in one sheet
|
|
|
let cnt = 0;
|
|
@@ -668,9 +687,8 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
|
|
|
let shtItemData = pageData.items[i];
|
|
|
let tmpPos = yMultiPos[i];
|
|
|
cellIdx = 0;
|
|
|
- nextRowIdx = tmpPos.indexOf(shtItemData.cells[cellIdx][JV.PROP_AREA][JV.PROP_TOP]);
|
|
|
- self_setData(shtItemData, tmpPos, cnt);
|
|
|
- cnt += tmpPos.length;
|
|
|
+ self_setDataEx(shtItemData, tmpPos, cnt);
|
|
|
+ cnt += tmpPos.length - 2;
|
|
|
}
|
|
|
}
|
|
|
rst.push('</sheetData>');
|
|
@@ -712,12 +730,11 @@ module.exports = {
|
|
|
let isSinglePage = rptOptions.singlePage;
|
|
|
let sheets = [];
|
|
|
if (isSinglePage) {
|
|
|
- //
|
|
|
+ sheets.push({sheetName: '全部页'});
|
|
|
} else {
|
|
|
- //
|
|
|
- }
|
|
|
- for (let i = 0; i < pageData.items.length; i++) {
|
|
|
- sheets.push({sheetName: '第' + (i + 1) + '页'});
|
|
|
+ for (let i = 0; i < pageData.items.length; i++) {
|
|
|
+ sheets.push({sheetName: '第' + (i + 1) + '页'});
|
|
|
+ }
|
|
|
}
|
|
|
//1.
|
|
|
let file = '[Content_Types].xml';
|