|  | @@ -584,7 +584,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |          if (typeof cell[JV.PROP_FONT] === 'string') {
 | 
	
		
			
				|  |  |              sheetFont = pageData[JV.NODE_FONT_COLLECTION][cell[JV.PROP_FONT]];
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -            sheetFont = cell[JV.PROP_FONT];
 | 
	
		
			
				|  |  | +            sheetFont = cell[JV.PROP_FONT] || pageData[JV.NODE_FONT_COLLECTION]['Content'];
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          for (let i = 0; i < stylesObj.fonts.length; i++) {
 | 
	
		
			
				|  |  |              const font = stylesObj.fonts[i];
 | 
	
	
		
			
				|  | @@ -756,6 +756,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |              fontAngle = parseInt(pageData[JV.NODE_FONT_COLLECTION][cell[JV.PROP_FONT]].FontAngle);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              fontAngle = parseInt(cell[JV.PROP_FONT].FontAngle);
 | 
	
		
			
				|  |  | +            // fontAngle = parseInt(cell[JV.PROP_FONT]?.FontAngle || 0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const borderId = private_getBorderId(cell);
 | 
	
	
		
			
				|  | @@ -1332,7 +1333,8 @@ function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel,
 | 
	
		
			
				|  |  |                                      if (signatureCell.isStamp) {
 | 
	
		
			
				|  |  |                                          //签章不能用role的图片!!!
 | 
	
		
			
				|  |  |                                          let sPObj = _getDupPicPath(signatureCell.path);
 | 
	
		
			
				|  |  | -                                        if (sPObj !== null && isSinglePage) { // 只有在isSinglePage为true时,才需要优化签名
 | 
	
		
			
				|  |  | +                                        // if (sPObj !== null && isSinglePage) { // 只有在isSinglePage为true时,才需要优化签名
 | 
	
		
			
				|  |  | +                                        if (sPObj !== null && (isSinglePage || signatureCell.isStamp)) { // 但感觉实际上allInOneBook的isStamp情况下,也需要优化签名
 | 
	
		
			
				|  |  |                                              signatureCell.signature_name = sPObj.signature_name; // 重点,如果有相同路径的,修改signature_name!
 | 
	
		
			
				|  |  |                                              rst = true;
 | 
	
		
			
				|  |  |                                          } else {
 | 
	
	
		
			
				|  | @@ -1642,31 +1644,32 @@ const excelExportUtil = {
 | 
	
		
			
				|  |  |                  for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  |                      maxY = 0;
 | 
	
		
			
				|  |  |                      minY = 100000;
 | 
	
		
			
				|  |  | -                    if (pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS]) {
 | 
	
		
			
				|  |  | -                        let pos = pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_TOP][0] + offsetY;
 | 
	
		
			
				|  |  | +                    const currentPage = pageDataArray[i].items[j];
 | 
	
		
			
				|  |  | +                    if (currentPage[JV.PAGE_SPECIAL_MERGE_POS]) {
 | 
	
		
			
				|  |  | +                        let pos = currentPage[JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_TOP][0] + offsetY;
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_TOP].push(pos);
 | 
	
		
			
				|  |  | -                        pos = pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_BOTTOM][0] + offsetY;
 | 
	
		
			
				|  |  | +                        pos = currentPage[JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_BOTTOM][0] + offsetY;
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_BOTTOM].push(pos);
 | 
	
		
			
				|  |  | -                    } else if (pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER]) {
 | 
	
		
			
				|  |  | -                        let pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_TOP] + offsetY;
 | 
	
		
			
				|  |  | +                    } else if (currentPage[JV.PROP_PAGE_MERGE_BORDER]) {
 | 
	
		
			
				|  |  | +                        let pos = currentPage[JV.PROP_PAGE_MERGE_BORDER][JV.PROP_TOP] + offsetY;
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_TOP].push(pos);
 | 
	
		
			
				|  |  | -                        pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
 | 
	
		
			
				|  |  | +                        pos = currentPage[JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_BOTTOM].push(pos);
 | 
	
		
			
				|  |  |                      } else if (pageDataArray[i][JV.BAND_PROP_MERGE_BAND]) {
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_TOP].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_TOP] + offsetY);
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_BOTTOM].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_BOTTOM] + offsetY);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      // 1.2.1 重新设置普通cells的Top Bottom坐标
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_CELLS]);
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_INTERACT_CELLS]);
 | 
	
		
			
				|  |  |                      // 1.2.2 重新设置电子签名cells的Top Bottom坐标
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_CELLS]);
 | 
	
		
			
				|  |  |                      // 1.2.3 重新设置电子签名日期cells的Top Bottom坐标
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_DATE_CELLS]);
 | 
	
		
			
				|  |  |                      // 1.2.4 重置电子签名审核意见cells的Top Bottom坐标
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_AUDIT_CELLS]);
 | 
	
		
			
				|  |  |                      // 1.2.5 重置水印的Top Bottom坐标
 | 
	
		
			
				|  |  | -                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS]);
 | 
	
		
			
				|  |  | +                    checkAndResetCellYPos(currentPage[JV.PROP_WATERMARK_CELLS]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      const bottomGap = Math.round((pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1] - parseFloat(pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM]) / 2.54) * DPI) - maxY;
 | 
	
		
			
				|  |  |                      offsetY += (maxY - minY);
 | 
	
	
		
			
				|  | @@ -1682,40 +1685,19 @@ const excelExportUtil = {
 | 
	
		
			
				|  |  |                  const pageItem = {};
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_PAGE_SEQ] = i + 1;
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_CELLS] = [];
 | 
	
		
			
				|  |  | -                for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_CELLS].push(pageDataArray[i].items[j][JV.PROP_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_INTERACT_CELLS] = [];
 | 
	
		
			
				|  |  | -                for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_INTERACT_CELLS].push(pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_SIGNATURE_CELLS] = [];
 | 
	
		
			
				|  |  | -                for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_SIGNATURE_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_SIGNATURE_DATE_CELLS] = [];
 | 
	
		
			
				|  |  | -                for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_SIGNATURE_DATE_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS] = [];
 | 
	
		
			
				|  |  | -                for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  |                  pageItem[JV.PROP_WATERMARK_CELLS] = [];
 | 
	
		
			
				|  |  |                  for (let j = 0; j < pageDataArray[i].items.length; j++) {
 | 
	
		
			
				|  |  | -                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS].length; k++) {
 | 
	
		
			
				|  |  | -                        pageItem[JV.PROP_WATERMARK_CELLS].push(pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS][k]);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    const currentPage = pageDataArray[i].items[j];
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_CELLS].push(...(currentPage[JV.PROP_CELLS] || []));
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_INTERACT_CELLS].push(...(currentPage[JV.PROP_INTERACT_CELLS] || []));
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_SIGNATURE_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_CELLS] || []));
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_SIGNATURE_DATE_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_DATE_CELLS] || []));
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_AUDIT_CELLS] || []));
 | 
	
		
			
				|  |  | +                    pageItem[JV.PROP_WATERMARK_CELLS].push(...(currentPage[JV.PROP_WATERMARK_CELLS] || []));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  newPagePos[i][JV.NODE_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE];
 | 
	
		
			
				|  |  |                  pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i];
 |