|  | @@ -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; // 未来调用的时候,这个属性要从外面给!!!
 |