@michaelray/style-xlsx

1.0.1 • Public • Published

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: 170 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
			 { wpx: 150 },
		  ]
		}); // Returns a buffer
	 console.log('buffer', buffer);

	 fs.writeFileSync('./the_content.xlsx', buffer, { 'flag': 'w' });

Readme

Keywords

Package Sidebar

Install

npm i @michaelray/style-xlsx

Weekly Downloads

1

Version

1.0.1

License

ISC

Unpacked Size

11.5 kB

Total Files

6

Last publish

Collaborators

  • michaelray1982