|
@@ -331,6 +331,31 @@ function writeSharedString(sharedStrList) {
|
|
|
}
|
|
|
return rst;
|
|
|
}
|
|
|
+function _setupPgBrks(pageData) {
|
|
|
+ pageData.pageBreaks = [];
|
|
|
+ let pgBrkIdx = 0;
|
|
|
+ const pgBrk = [];
|
|
|
+ function _insertMaxBottom(pCells, targetBottomArr) {
|
|
|
+ if (pCells) {
|
|
|
+ for (const cell of pCells) {
|
|
|
+ if (targetBottomArr.indexOf(cell[JV.PROP_AREA][JV.PROP_BOTTOM]) < 0) {
|
|
|
+ targetBottomArr.push(cell[JV.PROP_AREA][JV.PROP_BOTTOM]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (const page of pageData.items) {
|
|
|
+ const maxBottomArr = [];
|
|
|
+ _insertMaxBottom(page.cells, maxBottomArr);
|
|
|
+ _insertMaxBottom(page.signature_cells, maxBottomArr);
|
|
|
+ _insertMaxBottom(page.signature_date_cells, maxBottomArr);
|
|
|
+ _insertMaxBottom(page.signature_audit_cells, maxBottomArr);
|
|
|
+ pgBrkIdx += maxBottomArr.length;
|
|
|
+ pgBrk.push(pgBrkIdx);
|
|
|
+ }
|
|
|
+ pageData.pageBreaks.push(pgBrk);
|
|
|
+}
|
|
|
+
|
|
|
function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage, custSheetMergeBands, hasSignature, signSheetIdxArr) {
|
|
|
const rst = [];
|
|
|
const private_pushDftFont = function() {
|
|
@@ -374,14 +399,14 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
|
|
|
private_buildFirstDftStyle();
|
|
|
let sheetIdx = 0;
|
|
|
if (isSinglePage) {
|
|
|
- rst.push(writeSheet(pageData, null, paperSize, sharedStrList, stylesObj, null, hasSignature, sheetIdx, signSheetIdxArr, true));
|
|
|
+ rst.push(writeSheet(pageData, null, paperSize, sharedStrList, stylesObj, null, hasSignature, sheetIdx, signSheetIdxArr, true, -1));
|
|
|
} else {
|
|
|
for (let i = 0; i < pageData.items.length; i++) {
|
|
|
let appointedMergeBand = null;
|
|
|
if (custSheetMergeBands && custSheetMergeBands.length > i) {
|
|
|
appointedMergeBand = custSheetMergeBands[i];
|
|
|
}
|
|
|
- rst.push(writeSheet(pageData, pageData.items[i], paperSize, sharedStrList, stylesObj, appointedMergeBand, hasSignature, sheetIdx, signSheetIdxArr, i === 0));
|
|
|
+ rst.push(writeSheet(pageData, pageData.items[i], paperSize, sharedStrList, stylesObj, appointedMergeBand, hasSignature, sheetIdx, signSheetIdxArr, i === 0, i));
|
|
|
sheetIdx++;
|
|
|
}
|
|
|
}
|
|
@@ -509,7 +534,7 @@ function preAnalyzePos(pageData, sheetData, xPos, yPos, yMultiPos) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, appointedMergeBand, hasSignature, sheetIdx, signSheetIdxArr, isFirstSheet) {
|
|
|
+function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, appointedMergeBand, hasSignature, sheetIdx, signSheetIdxArr, isFirstSheet, pgBrkIdx) {
|
|
|
const rst = [];
|
|
|
const xPos = [];
|
|
|
const yPos = [];
|
|
@@ -943,6 +968,23 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
|
|
|
// }
|
|
|
rst.push('<drawing r:id="rId1"/>');
|
|
|
}
|
|
|
+ // 插入分页符---------------------------
|
|
|
+ if (pageData.pageBreaks) {
|
|
|
+ let pgBrks = [];
|
|
|
+ if (sheetData !== null) {
|
|
|
+ pgBrks = pageData.pageBreaks[pgBrkIdx];
|
|
|
+ } else {
|
|
|
+ pgBrks = pageData.pageBreaks[0];
|
|
|
+ }
|
|
|
+ if (pgBrks.length > 1) {
|
|
|
+ rst.push('<rowBreaks count="' + pgBrks.length + '" manualBreakCount="' + pgBrks.length + '" >');
|
|
|
+ for (let pbi = 0; pbi < pgBrks.length; pbi++) {
|
|
|
+ rst.push('<brk id="' + pgBrks[pbi] + '" max="16383" man="1" />');
|
|
|
+ }
|
|
|
+ rst.push('</rowBreaks>');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 插入分页符结束---------------------------
|
|
|
rst.push('</worksheet>');
|
|
|
return rst;
|
|
|
}
|
|
@@ -1159,7 +1201,7 @@ function _createDummyCell(dummyOrgCells, parentPage) {
|
|
|
control: 'Default',
|
|
|
style: 'Default_None',
|
|
|
Value: '',
|
|
|
- area: { Left: 0, Right: 0, Top: 0, Bottom: 0 }
|
|
|
+ area: { Left: 0, Right: 0, Top: 0, Bottom: 0 },
|
|
|
};
|
|
|
if (signature.style) dummyCell.style = signature.style;
|
|
|
dummyCell[JV.PROP_AREA][JV.PROP_LEFT] = signature[JV.PROP_AREA][JV.PROP_LEFT];
|
|
@@ -1307,6 +1349,9 @@ module.exports = {
|
|
|
createDummySignatureCell(pageData);
|
|
|
}
|
|
|
if (isSinglePage) {
|
|
|
+ // 加分页符(分页符要在外部处理好)-------------------
|
|
|
+ _setupPgBrks(pageData);
|
|
|
+ // 加分页符结束-------------------
|
|
|
sheets.push({ sheetName: '全部页' });
|
|
|
} else {
|
|
|
if (custSheetNames && custSheetNames.length === pageData.items.length) {
|
|
@@ -1501,6 +1546,9 @@ module.exports = {
|
|
|
mergeBand[JV.PROP_RIGHT].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_RIGHT]);
|
|
|
sheetNames.push(pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
|
|
|
|
|
|
+ // 加分页符(分页符要在外部处理好)-------------------
|
|
|
+ _setupPgBrks(pageDataArray[i]);
|
|
|
+ // 加分页符结束-------------------
|
|
|
for (let j = 0; j < pageDataArray[i].items.length; j++) {
|
|
|
let maxY = 0;
|
|
|
let minY = 100000;
|
|
@@ -1563,8 +1611,9 @@ module.exports = {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // 2. newPageData的items属性
|
|
|
+ // 2. newPageData的items属性及相关分页符
|
|
|
newPageData.items = [];
|
|
|
+ newPageData.pageBreaks = [];
|
|
|
for (let i = 0; i < pageDataArray.length; i++) {
|
|
|
const pageItem = {};
|
|
|
pageItem[JV.PROP_PAGE_SEQ] = i + 1;
|
|
@@ -1595,6 +1644,13 @@ module.exports = {
|
|
|
newPagePos[i][JV.NODE_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE];
|
|
|
pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i];
|
|
|
newPageData.items.push(pageItem);
|
|
|
+ // 重新分配分页符()------------------
|
|
|
+ if (pageDataArray[i].pageBreaks.length === 1) {
|
|
|
+ newPageData.pageBreaks.push(pageDataArray[i].pageBreaks[0]);
|
|
|
+ } else {
|
|
|
+ newPageData.pageBreaks.push([]);
|
|
|
+ }
|
|
|
+ // 重新分配分页符结束------------------
|
|
|
}
|
|
|
// 3. everything is ok, then call me
|
|
|
// let roleRel = null; // 未来调用的时候,这个属性要从外面给!!!
|