@michaelray/style-xlsx
v1.0.6
Published
改进node生成excel,增加样式功能,修复行高问题。
Downloads
35
Readme
Introduce
改进node生成excel,增加样式功能。样式配置参考https://www.npmjs.com/package/xlsx-style
Demo
const xlsx = require('@michaelray/style-xlsx');
let headerStyle = {
font: {
name : 'Microsoft YaHei',
bold : true,
color: { rgb: '000000' },
sz : '10'
},
alignment: {
horizontal: 'center',
vertical: 'center',
},
fill : {
// patternType:'solid',
fgColor: { rgb: 'ff8080' },
},
border: {
top : {
style: 'thin', color: { rgb: '000000' }
},
bottom: {
style: 'thin', color: { rgb: '000000' }
},
left : {
style: 'thin', color: { rgb: '000000' }
},
right : {
style: 'thin', color: { rgb: '000000' }
},
}
};
let contentCellStyle = {
fill : {
// patternType:'solid',
fgColor: { rgb: 'FFFFAA00' },
},
font : {
bold : true,
color: {
rgb: '000000'
}
},
border: {
top : {
style: 'dashed',
},
bottom: {
style: 'medium', color: { rgb: 'da4f43' }
},
left : {
style: 'medium', color: { rgb: 'da4f43' }
},
right : {
style: 'medium', color: { rgb: 'da4f43' }
},
}
};
// 合并控制
const range1 = {
// 起始坐标
s: {
r: 1, // 行
c: 0, // 列
},
// 结束坐标
e: {
r: 1,
c: 1,
},
};
const range2 = {
// 起始坐标
s: {
r: 0, // 行
c: 3, // 列
},
// 结束坐标
e: {
r: 0,
c: 4,
},
};
const sheetOptions = { '!merges': [range1, range2] };
let d = [
{
name : 'Sheet1',
data : [
// 第一排
[
{
v: '本月业绩目标',
s: headerStyle
},
{
v: '',
s: headerStyle
},
{
v: '实际完成业绩',
s: headerStyle
},
//-----------
{
v: '0',
s: headerStyle
},
{
v: '0',
s: headerStyle
},
//-----------------
{
v: '业绩达成率',
s: headerStyle
},
{
v: '0',
s: headerStyle
},
{
v: '去年同期',
s: headerStyle
},
{
v: '0',
s: headerStyle
},
{
v: '0',
s: headerStyle
},
{
v: '同比业绩增长率',
s: headerStyle
},
{
v: '0',
s: headerStyle
},
{
v: '要完成任务剩下每日业绩目标',
s: headerStyle
},
{
v: '要完成任务剩下每日业绩目标',
s: headerStyle
},
{
v: '',
s: headerStyle
},
],
// 第二排
[
{
v: '项目',
s: headerStyle
},
{
v: '项目',
s: headerStyle
},
{
v: '2021年',
s: headerStyle
},
{
v: '2020年',
s: headerStyle
},
{
v: '增长额',
s: headerStyle
},
{
v: '增长率',
s: headerStyle
},
{
v: '项目',
s: headerStyle
},
{
v: '2021年',
s: headerStyle
},
{
v: '2020年',
s: headerStyle
},
{
v: '增长额',
s: headerStyle
},
{
v: '增长率',
s: headerStyle
},
{
v: '项目',
s: headerStyle
},
{
v: '2021年',
s: headerStyle
},
{
v: '2020年',
s: headerStyle
},
{
v: '增长额',
s: headerStyle
},
],
],
// 其它参数
options: sheetOptions
}
];
const buffer = xlsx.build(d,
{
'!cols': [
{wpx: 500},
{wpx: 100},
{wpx: 140},
{wpx: 140},
],
'!rows': [
{hpx: 40,},
{hpx: 60},
{hpx: 80},
{hpx: 100},
],
}); // Returns a buffer
console.log('buffer', buffer);
fs.writeFileSync('./the_content.xlsx', buffer, { 'flag': 'w' });