officegen 模塊能夠爲Microsoft Office 2007及更高版本生成Office Open XML文件。此模塊不依賴於任何框架,您不須要安裝Microsoft Office,所以您能夠將它用於任何類型的JavaScript應用程序。輸出也是流而不是文件,不依賴於任何輸出工具。此模塊應適用於支持Node.js 0.10或更高版本的任何環境,包括Linux,OSX和Windows。git
此模塊生成Excel(.xlsx),PowerPoint(.pptx)和Word(.docx)文檔。 Officegen還支持帶有嵌入數據的PowerPoint本機圖表對象。github
git clone git://github.com/Ziv-Barber/officegen.git
npm
npm install officegen
promise
npm install Ziv-Barber/officegen#master
app
var officegen = require('officegen');
框架
var myDoc = officegen ( '<type>' );
async
type 能夠是 pptx, docx, xlsx工具
var myDoc = officegen ({ 'type': '<type of document to create>', // 類型 {} // options 配置項 });
// 監聽文檔完成 myDoc.on ( 'finalize', function ( written ) { console.log ( written ); });
// 監聽文檔錯誤 myDoc.on ( 'error', function ( err ) { console.log ( err ); });
// 一樣能夠在實例化的時候指定 var pptx = officegen ({ 'type': 'pptx', // or 'xlsx', etc 'onend': function ( written ) { console.log(written); }, 'onerr': function ( err ) { console.log ( err ); } });
// 通樣能夠在生成文件的時候指定 var myDoc = officegen('pptx'); var out = fs.createWriteStream ( 'out.pptx' ); // 建立文件 myDoc.generate ( out, { 'finalize': function ( written ) { console.log ( written ); }, 'error': function ( err ) { console.log ( err ); } });
var http = require("http"); var officegen = require('officegen'); http.createServer ( function ( request, response ) { response.writeHead ( 200, { "Content-Type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", 'Content-disposition': 'attachment; filename=surprise.pptx' }); var pptx = officegen ( 'pptx' ); pptx.on ( 'finalize', function ( written ) { // ... }); pptx.on ( 'error', function ( err ) { // ... }); // ... (fill pptx with data) pptx.generate ( response ); }).listen ( 3000 );
var pptx = officegen ({ 'type': 'pptx', 'title': '<title>' }); // or pptx.setDocTitle ( '<title>' );
如下只有在 word 中使用:ui
var docx = officegen ({ 'type': 'docx', 'subject': '...', 'keywords': '...', 'description': '...' }); // or docx.setDocSubject ( '...' ); docx.setDocKeywords ( '...' ); docx.setDescription ( '...' );
官網中沒有 promise 的例子, 咱們須要本身改造excel
async function generate(){ return new Promise((resolve, reject) => { var myDoc = officegen('pptx'); dosoming ... var out = fs.createWriteStream ( 'out.pptx' ); // 建立文件 myDoc.generate ( out, { 'finalize': function(data){ console.log(data); }, 'error': reject, }); out.on('finish', function(){ resolve(true); }); }); }
// 調用 let resuslt = await generate();