|  | @@ -287,7 +287,7 @@ function writeSharedString(sharedStrList){
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      return rst;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage){
 | 
	
		
			
				|  |  | +function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage, custSheetMergeBands){
 | 
	
		
			
				|  |  |      let rst = [];
 | 
	
		
			
				|  |  |      let private_pushDftFont = function(){
 | 
	
		
			
				|  |  |          let font = {};
 | 
	
	
		
			
				|  | @@ -329,15 +329,19 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
 | 
	
		
			
				|  |  |      private_pushDftFont();
 | 
	
		
			
				|  |  |      private_buildFirstDftStyle();
 | 
	
		
			
				|  |  |      if (isSinglePage) {
 | 
	
		
			
				|  |  | -        rst.push(writeSheet(pageData, null, paperSize, sharedStrList, stylesObj));
 | 
	
		
			
				|  |  | +        rst.push(writeSheet(pageData, null, paperSize, sharedStrList, stylesObj, null));
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |          for (let i = 0; i < pageData.items.length; i++) {
 | 
	
		
			
				|  |  | -            rst.push(writeSheet(pageData, pageData.items[i], paperSize, sharedStrList, stylesObj));
 | 
	
		
			
				|  |  | +            let appointedMergeBand = null;
 | 
	
		
			
				|  |  | +            if (custSheetMergeBands && custSheetMergeBands.length > i) {
 | 
	
		
			
				|  |  | +                appointedMergeBand = custSheetMergeBands[i];
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            rst.push(writeSheet(pageData, pageData.items[i], paperSize, sharedStrList, stylesObj, appointedMergeBand));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      return rst;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
 | 
	
		
			
				|  |  | +function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, appointedMergeBand){
 | 
	
		
			
				|  |  |      let rst = [], xPos = [], yPos = [], yMultiPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 | 
	
		
			
				|  |  |      let currentPageMergePos = null; //在 JV.PAGING_OPTION_INFINITY 场合应用
 | 
	
		
			
				|  |  |      let private_pre_analyze_pos = function(){
 | 
	
	
		
			
				|  | @@ -501,6 +505,9 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
 | 
	
		
			
				|  |  |              mergeBorder = (sheetData)?sheetData[JV.PROP_PAGE_MERGE_BORDER]:pageData[JV.BAND_PROP_MERGE_BAND],
 | 
	
		
			
				|  |  |              mergeBand = pageData[JV.BAND_PROP_MERGE_BAND]
 | 
	
		
			
				|  |  |          ;
 | 
	
		
			
				|  |  | +        if (appointedMergeBand !== null) {
 | 
	
		
			
				|  |  | +            mergeBand = appointedMergeBand;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (sheetBorder[borderStr] && sheetBorder[borderStr][JV.PROP_LINE_WEIGHT] !== undefined) {
 | 
	
		
			
				|  |  |              rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT];
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -809,7 +816,7 @@ function mergeProperties(orgObj, newObj) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  module.exports = {
 | 
	
		
			
				|  |  | -    exportExcel: function (pageData, paperSize, fName, options, custSheetNames, callback) {
 | 
	
		
			
				|  |  | +    exportExcel: function (pageData, paperSize, fName, options, custSheetNames, custSheetMergeBands, callback) {
 | 
	
		
			
				|  |  |          let rptOptions = ({singlePage: false, fileName: 'report'});
 | 
	
		
			
				|  |  |          if (options === 'true') {
 | 
	
		
			
				|  |  |              rptOptions.singlePage = true;
 | 
	
	
		
			
				|  | @@ -864,7 +871,7 @@ module.exports = {
 | 
	
		
			
				|  |  |          //6.
 | 
	
		
			
				|  |  |          let zip_worksheets = zip_xl.folder('worksheets');
 | 
	
		
			
				|  |  |          let sharedStrList = [], stylesObj = {};
 | 
	
		
			
				|  |  | -        data = writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage);
 | 
	
		
			
				|  |  | +        data = writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage, custSheetMergeBands);
 | 
	
		
			
				|  |  |          if (isSinglePage) {
 | 
	
		
			
				|  |  |              for (let i = 0; i < 1; i++) {
 | 
	
		
			
				|  |  |                  file = 'sheet' + (i + 1) + '.xml';
 | 
	
	
		
			
				|  | @@ -906,7 +913,7 @@ module.exports = {
 | 
	
		
			
				|  |  |          //   -- 简单来说,就是重新包装数据
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  |              // 1.1 newPageData外围属性
 | 
	
		
			
				|  |  | -            let newContrl = {}, newFont = {}, newStyle = {};
 | 
	
		
			
				|  |  | +            let newContrl = {}, newFont = {}, newStyle = {}, custMergeBands = [];
 | 
	
		
			
				|  |  |              for (let i = 0; i < pageDataArray.length; i++) {
 | 
	
		
			
				|  |  |                  mergeProperties(newContrl, pageDataArray[i][JV.NODE_CONTROL_COLLECTION]);
 | 
	
		
			
				|  |  |                  mergeProperties(newFont, pageDataArray[i][JV.NODE_FONT_COLLECTION]);
 | 
	
	
		
			
				|  | @@ -923,6 +930,7 @@ module.exports = {
 | 
	
		
			
				|  |  |              for (let i = 0; i < pageDataArray.length; i++) {
 | 
	
		
			
				|  |  |                  let offsetY = 0;
 | 
	
		
			
				|  |  |                  let mergeBand = {};
 | 
	
		
			
				|  |  | +                custMergeBands.push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND]);
 | 
	
		
			
				|  |  |                  mergeBand[JV.PROP_LEFT] = [];
 | 
	
		
			
				|  |  |                  mergeBand[JV.PROP_RIGHT] = [];
 | 
	
		
			
				|  |  |                  mergeBand[JV.PROP_TOP] = [];
 | 
	
	
		
			
				|  | @@ -976,7 +984,7 @@ module.exports = {
 | 
	
		
			
				|  |  |                  newPageData.items.push(pageItem);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //3. everything is ok, then call me
 | 
	
		
			
				|  |  | -            me.exportExcel(newPageData, paperSize, fName, 'false', sheetNames, callback);
 | 
	
		
			
				|  |  | +            me.exportExcel(newPageData, paperSize, fName, 'false', sheetNames, custMergeBands, callback);
 | 
	
		
			
				|  |  |              // fsUtil.writeObjToFile(newPageData, 'D:/GitHome/ConstructionOperation/tmp/combinedHeader.js');
 | 
	
		
			
				|  |  |          } catch (e) {
 | 
	
		
			
				|  |  |              console.log(e);
 |