|  | @@ -9,6 +9,7 @@ let jpcCmnHelper = require('../rpt_component/helper/jpc_helper_common');
 | 
	
		
			
				|  |  |  let DPI = jpcCmnHelper.getScreenDPI()[0];
 | 
	
		
			
				|  |  |  let fsUtil = require('../../../public/fsUtil');
 | 
	
		
			
				|  |  |  const dftHeadXml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
 | 
	
		
			
				|  |  | +const uuidV1 = require('uuid/v1');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function writeContentTypes(sheets, isSinglePage) {
 | 
	
		
			
				|  |  |      let rst = [];
 | 
	
	
		
			
				|  | @@ -157,6 +158,9 @@ function writeStyles(stylesObj){
 | 
	
		
			
				|  |  |          if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[3]])) {
 | 
	
		
			
				|  |  |              rst.push('<b/>');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[4]])) {
 | 
	
		
			
				|  |  | +            rst.push('<i/>');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[5]])) {
 | 
	
		
			
				|  |  |              rst.push('<u/>');
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -342,7 +346,8 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
 | 
	
		
			
				|  |  |      return rst;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, appointedMergeBand){
 | 
	
		
			
				|  |  | -    let rst = [], xPos = [], yPos = [], yMultiPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 | 
	
		
			
				|  |  | +    let rst = [], xPos = [], yPos = [], yMultiPos = [], currentMergeBorder = null,
 | 
	
		
			
				|  |  | +        headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 | 
	
		
			
				|  |  |      let currentPageMergePos = null; //在 JV.PAGING_OPTION_INFINITY 场合应用
 | 
	
		
			
				|  |  |      let private_pre_analyze_pos = function(){
 | 
	
		
			
				|  |  |          let cell, pos;
 | 
	
	
		
			
				|  | @@ -443,7 +448,8 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |              if (sheetFont) {
 | 
	
		
			
				|  |  |                  // if (font[JV.FONT_PROPS[0]] === sheetFont[JV.FONT_PROPS[0]] && font.size === Math.round(sheetFont[JV.FONT_PROPS[1]] * 3 / 4)
 | 
	
		
			
				|  |  |                  if (font[JV.FONT_PROPS[0]] === sheetFont[JV.FONT_PROPS[0]] && font.size === Math.floor(sheetFont[JV.FONT_PROPS[1]] * 3 / 4)
 | 
	
		
			
				|  |  | -                    && font[JV.FONT_PROPS[3]] === sheetFont[JV.FONT_PROPS[3]] && font[JV.FONT_PROPS[5]] === sheetFont[JV.FONT_PROPS[5]]) {
 | 
	
		
			
				|  |  | +                    && font[JV.FONT_PROPS[3]] === sheetFont[JV.FONT_PROPS[3]] && font[JV.FONT_PROPS[4]] === sheetFont[JV.FONT_PROPS[4]]
 | 
	
		
			
				|  |  | +                    && font[JV.FONT_PROPS[5]] === sheetFont[JV.FONT_PROPS[5]] ) {
 | 
	
		
			
				|  |  |                      hasFont = true;
 | 
	
		
			
				|  |  |                      rst = i;
 | 
	
		
			
				|  |  |                      break;
 | 
	
	
		
			
				|  | @@ -460,6 +466,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |              font.charset = 134;
 | 
	
		
			
				|  |  |              font.colorIdx = "8";
 | 
	
		
			
				|  |  |              font[JV.FONT_PROPS[3]] = sheetFont[JV.FONT_PROPS[3]]; //font bold
 | 
	
		
			
				|  |  | +            font[JV.FONT_PROPS[4]] = sheetFont[JV.FONT_PROPS[4]]; //font italic
 | 
	
		
			
				|  |  |              font[JV.FONT_PROPS[5]] = sheetFont[JV.FONT_PROPS[5]]; //font underline
 | 
	
		
			
				|  |  |              stylesObj.fonts.push(font);
 | 
	
		
			
				|  |  |              rst = stylesObj.fonts.length - 1;
 | 
	
	
		
			
				|  | @@ -502,7 +509,8 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr, needFurtherChk) {
 | 
	
		
			
				|  |  |          let rst = 0,
 | 
	
		
			
				|  |  | -            mergeBorder = (sheetData)?sheetData[JV.PROP_PAGE_MERGE_BORDER]:pageData[JV.BAND_PROP_MERGE_BAND],
 | 
	
		
			
				|  |  | +            // mergeBorder = (sheetData)?sheetData[JV.PROP_PAGE_MERGE_BORDER]:pageData[JV.BAND_PROP_MERGE_BAND],
 | 
	
		
			
				|  |  | +            mergeBorder = currentMergeBorder,
 | 
	
		
			
				|  |  |              mergeBand = pageData[JV.BAND_PROP_MERGE_BAND]
 | 
	
		
			
				|  |  |          ;
 | 
	
		
			
				|  |  |          if (appointedMergeBand !== null) {
 | 
	
	
		
			
				|  | @@ -752,6 +760,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |          if (sheetData) {
 | 
	
		
			
				|  |  |              //current sheet data
 | 
	
		
			
				|  |  |              currentPageMergePos = sheetData[JV.PAGE_SPECIAL_MERGE_POS];
 | 
	
		
			
				|  |  | +            currentMergeBorder = sheetData[JV.PROP_PAGE_MERGE_BORDER];
 | 
	
		
			
				|  |  |              self_setDataEx(sheetData, yPos, 0);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              //total data in one sheet
 | 
	
	
		
			
				|  | @@ -759,6 +768,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
 | 
	
		
			
				|  |  |              for (let i = 0; i < pageData.items.length; i++) {
 | 
	
		
			
				|  |  |                  let shtItemData = pageData.items[i];
 | 
	
		
			
				|  |  |                  currentPageMergePos = shtItemData[JV.PAGE_SPECIAL_MERGE_POS];
 | 
	
		
			
				|  |  | +                currentMergeBorder = shtItemData[JV.PROP_PAGE_MERGE_BORDER];
 | 
	
		
			
				|  |  |                  let tmpPos = yMultiPos[i];
 | 
	
		
			
				|  |  |                  cellIdx = 0;
 | 
	
		
			
				|  |  |                  self_setDataEx(shtItemData, tmpPos, cnt);
 | 
	
	
		
			
				|  | @@ -818,7 +828,7 @@ function mergeProperties(orgObj, newObj) {
 | 
	
		
			
				|  |  |  module.exports = {
 | 
	
		
			
				|  |  |      exportExcel: function (pageData, paperSize, fName, options, custSheetNames, custSheetMergeBands, callback) {
 | 
	
		
			
				|  |  |          let rptOptions = ({singlePage: false, fileName: 'report'});
 | 
	
		
			
				|  |  | -        if (options === 'true') {
 | 
	
		
			
				|  |  | +        if (options === 'true' || options === true) {
 | 
	
		
			
				|  |  |              rptOptions.singlePage = true;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          let isSinglePage = rptOptions.singlePage;
 | 
	
	
		
			
				|  | @@ -891,7 +901,9 @@ module.exports = {
 | 
	
		
			
				|  |  |          zip_xl.file(file, data.join(''), {compression: 'DEFLATE'});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (fName) {
 | 
	
		
			
				|  |  | -            let newName = '' + (new Date()).valueOf();
 | 
	
		
			
				|  |  | +            // let newName = '' + (new Date()).valueOf();
 | 
	
		
			
				|  |  | +            let newName = uuidV1();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              zip.generateNodeStream({type:'nodebuffer',streamFiles:true})
 | 
	
		
			
				|  |  |                  .pipe(fs.createWriteStream(__dirname.slice(0, __dirname.length - 21) + '/tmp/' + newName + '.xlsx'))
 | 
	
		
			
				|  |  |                  .on('finish', function () {
 | 
	
	
		
			
				|  | @@ -931,6 +943,7 @@ module.exports = {
 | 
	
		
			
				|  |  |                  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] = [];
 | 
	
	
		
			
				|  | @@ -947,6 +960,11 @@ module.exports = {
 | 
	
		
			
				|  |  |                          mergeBand[JV.PROP_TOP].push(pos);
 | 
	
		
			
				|  |  |                          pos = pageDataArray[i].items[j][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;
 | 
	
		
			
				|  |  | +                        mergeBand[JV.PROP_TOP].push(pos);
 | 
	
		
			
				|  |  | +                        pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
 | 
	
		
			
				|  |  | +                        mergeBand[JV.PROP_BOTTOM].push(pos);
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          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);
 |