mirror of
https://github.com/wekan/wekan.git
synced 2025-04-24 05:57:13 -04:00
Fix: Impossible to export board to excel where title exceeding 31 chars
This commit is contained in:
parent
fdd23e2f54
commit
08a01c6d2c
1 changed files with 82 additions and 39 deletions
|
@ -167,7 +167,28 @@ class ExporterExcel {
|
|||
workbook.lastPrinted = new Date();
|
||||
const filename = `${result.title}.xlsx`;
|
||||
//init worksheet
|
||||
const worksheet = workbook.addWorksheet(result.title, {
|
||||
let worksheetTitle = result.title;
|
||||
if (worksheetTitle.length > 31) {
|
||||
// MS Excel doesn't allow worksheet name longer than 31 chars
|
||||
// Exceljs truncate names to 31 chars
|
||||
let words = worksheetTitle.split(" ");
|
||||
let tmpTitle = "";
|
||||
for (let i=0;i<words.length; i++) {
|
||||
if (words[0].length > 27) {
|
||||
// title has no spaces
|
||||
tmpTitle = words[0].substr(0,27) + " ";
|
||||
break;
|
||||
}
|
||||
if(tmpTitle.length + words[i].length < 27) {
|
||||
tmpTitle += words[i] + " ";
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
worksheetTitle = tmpTitle + "...";
|
||||
}
|
||||
const worksheet = workbook.addWorksheet(worksheetTitle, {
|
||||
properties: {
|
||||
tabColor: {
|
||||
argb: 'FFC0000',
|
||||
|
@ -179,7 +200,7 @@ class ExporterExcel {
|
|||
},
|
||||
});
|
||||
//get worksheet
|
||||
const ws = workbook.getWorksheet(result.title);
|
||||
const ws = workbook.getWorksheet(worksheetTitle);
|
||||
ws.properties.defaultRowHeight = 20;
|
||||
//init columns
|
||||
//Excel font. Western: Arial. zh-CN: 宋体
|
||||
|
@ -311,7 +332,7 @@ class ExporterExcel {
|
|||
};
|
||||
ws.getCell('A1').alignment = {
|
||||
vertical: 'middle',
|
||||
horizontal: 'center',
|
||||
horizontal: 'left',
|
||||
};
|
||||
ws.getRow(1).height = 40;
|
||||
//get member and assignee info
|
||||
|
@ -354,6 +375,7 @@ class ExporterExcel {
|
|||
}
|
||||
//add data +8 hours
|
||||
function addTZhours(jdate) {
|
||||
if (!jdate) { return ' '; }
|
||||
const curdate = new Date(jdate);
|
||||
const checkCorrectDate = moment(curdate);
|
||||
if (checkCorrectDate.isValid()) {
|
||||
|
@ -382,7 +404,14 @@ class ExporterExcel {
|
|||
wrapText: true,
|
||||
};
|
||||
}
|
||||
|
||||
// cell Card alignment
|
||||
function cellCardAlignment(cellno) {
|
||||
ws.getCell(cellno).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'left',
|
||||
wrapText: true,
|
||||
};
|
||||
}
|
||||
//all border
|
||||
function allBorder(cellno) {
|
||||
ws.getCell(cellno).border = {
|
||||
|
@ -412,6 +441,8 @@ class ExporterExcel {
|
|||
|
||||
ws.mergeCells('B3:H3');
|
||||
ws.getRow(3).height = 40;
|
||||
// In MS Excel, we can't use the AutoFit feature on a column that contains a cell merged with cells in other columns.
|
||||
// Likewise, we can't use AutoFit on a row that contains a cell merged with cells in other rows.
|
||||
ws.getRow(3).font = {
|
||||
name: TAPi18n.__('excel-font'),
|
||||
size: 10,
|
||||
|
@ -619,6 +650,7 @@ class ExporterExcel {
|
|||
name: TAPi18n.__('excel-font'),
|
||||
size: 10,
|
||||
};
|
||||
// Border
|
||||
allBorder(`A${y}`);
|
||||
allBorder(`B${y}`);
|
||||
allBorder(`C${y}`);
|
||||
|
@ -637,20 +669,35 @@ class ExporterExcel {
|
|||
allBorder(`P${y}`);
|
||||
allBorder(`Q${y}`);
|
||||
allBorder(`R${y}`);
|
||||
cellCenter(`A${y}`);
|
||||
ws.getCell(`B${y}`).alignment = {
|
||||
// Alignment
|
||||
ws.getCell(`A${y}`).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'right',
|
||||
wrapText: true,
|
||||
};
|
||||
ws.getCell(`C${y}`).alignment = {
|
||||
cellCardAlignment(`B${y}`);
|
||||
cellCardAlignment(`C${y}`);
|
||||
cellCardAlignment(`D${y}`);
|
||||
cellCardAlignment(`E${y}`);
|
||||
cellCardAlignment(`F${y}`);
|
||||
cellCardAlignment(`G${y}`);
|
||||
cellCardAlignment(`H${y}`);
|
||||
cellCardAlignment(`I${y}`);
|
||||
cellCardAlignment(`J${y}`);
|
||||
cellCardAlignment(`K${y}`);
|
||||
cellCardAlignment(`L${y}`);
|
||||
cellCardAlignment(`M${y}`);
|
||||
cellCardAlignment(`N${y}`);
|
||||
cellCardAlignment(`O${y}`);
|
||||
cellCardAlignment(`P${y}`);
|
||||
ws.getCell(`Q${y}`).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'center',
|
||||
wrapText: true,
|
||||
};
|
||||
ws.getCell(`M${y}`).alignment = {
|
||||
wrapText: true,
|
||||
};
|
||||
ws.getCell(`N${y}`).alignment = {
|
||||
wrapText: true,
|
||||
};
|
||||
ws.getCell(`O${y}`).alignment = {
|
||||
ws.getCell(`R${y}`).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'center',
|
||||
wrapText: true,
|
||||
};
|
||||
}
|
||||
|
@ -714,6 +761,14 @@ class ExporterExcel {
|
|||
},
|
||||
},
|
||||
];
|
||||
// cell Card alignment
|
||||
function cellCardAlignmentWs2(cellno) {
|
||||
ws2.getCell(cellno).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'left',
|
||||
wrapText: true,
|
||||
};
|
||||
}
|
||||
//all border
|
||||
function allBorderWs2(cellno) {
|
||||
ws2.getCell(cellno).border = {
|
||||
|
@ -805,37 +860,25 @@ class ExporterExcel {
|
|||
name: TAPi18n.__('excel-font'),
|
||||
size: 10,
|
||||
};
|
||||
ws2.getCell(`A${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
horizontal: 'center',
|
||||
wrapText: true,
|
||||
};
|
||||
ws2.getCell(`B${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
wrapText: true,
|
||||
};
|
||||
ws2.getCell(`C${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
wrapText: true,
|
||||
};
|
||||
ws2.getCell(`D${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
wrapText: true,
|
||||
};
|
||||
ws2.getCell(`E${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
wrapText: true,
|
||||
};
|
||||
ws2.getCell(`F${y}`).alignment = {
|
||||
vertical: 'middle',
|
||||
wrapText: true,
|
||||
};
|
||||
// Border
|
||||
allBorderWs2(`A${y}`);
|
||||
allBorderWs2(`B${y}`);
|
||||
allBorderWs2(`C${y}`);
|
||||
allBorderWs2(`D${y}`);
|
||||
allBorderWs2(`E${y}`);
|
||||
allBorderWs2(`F${y}`);
|
||||
// Alignment
|
||||
ws2.getCell(`A${y}`).alignment = {
|
||||
vertical: 'top',
|
||||
horizontal: 'right',
|
||||
wrapText: true,
|
||||
};
|
||||
cellCardAlignmentWs2(`B${y}`);
|
||||
cellCardAlignmentWs2(`C${y}`);
|
||||
cellCardAlignmentWs2(`D${y}`);
|
||||
cellCardAlignmentWs2(`E${y}`);
|
||||
cellCardAlignmentWs2(`F${y}`);
|
||||
|
||||
}
|
||||
workbook.xlsx.write(res).then(function () {});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue