背景
实现一个可以在wps、office的展示图表、表格以及自定义页眉、页脚、字体大小以及图片信息。
使用到的库有 officegen 和 highchart-export-server
简单介绍一下officegen
officegen 模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件。此模块不依赖于任何框架,您不需要安装Microsoft Office,因此您可以将它用于任何类型的 JavaScript 应用程序。输出也是流而不是文件,不依赖于任何输出工具。officegen模块应适用于支持任何支持Node的任何环境,包括Linux,OSX和Windows。
此模块生成Excel(.xlsx),PowerPoint(.pptx)和Word(.docx)文档。 Officegen还支持带有嵌入数据的PowerPoint本机图表对象。
使用officegen生成Word文件
const officegen = require('officegen')
const fs = require('fs')
// 创建一个空的word对象
let docx = officegen('docx')
// 当word文件完成创建后会调用该函数
docx.on('finalize', written => {
console.log('Finish to create a Microsoft Word document.')
})
// 创建一个段落,类似html里面的p标签
let pObj = docx.createP()
// 往标签里面添加内容
pObj.addText('Simple')
// 添加内容同事设置字体颜色,北京颜色
pObj.addText(' and back color.', {
color: '00ffff', back: '000088' })
// 还可以往段落里面添加图片
pObj.addImage('some-image.png')
// 最后将docx对象塞到generate里面生成名为example.docx的文件
let out = fs.createWriteStream('example.docx')
docx.generate(out)
使用officegen生成PPT文件
const officegen = require('officegen')
let pptx = officegen('pptx')
// 创建一页PPT,可以往里面插图表、文本、表格以及图片
slide = pptx.makeNewSlide({
userLayout: 'title'
});
// 设置标题跟设置段落一样,可以设置字体大小/颜色,font-family
slide.setTitle([
// This array is like a paragraph and you can use any settings that you pass for creating a paragraph,
// Each object here is like a call to addText:
{
text: 'Hello ',
options: {
font_size: 56}
},
{
text: 'World!',
options: {
font_size: 56,
font_face: 'Arial',
color: 'ffff00'
}
}
]);
// 插入图表,这里的chartInfo有一定的数据编排格式,建议如果产品线需要很多图表的话,这里可以单独抽出来维护
slide.addChart( {
title: 'Column chart',
renderType: 'column', // 这里设置图表的样式,类似echart里面的type
valAxisTitle: 'Costs/Revenues ($)',
catAxisTitle: 'Category',
valAxisNumFmt: '$0',
valAxisMaxValue: 24,
data: [{
name: 'Income',
labels: ['2005', '2006', '2007', '2008', '2009'],
values: [<