|
@@ -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);
|