NodeJS 使用 officegen 生成 Excel, PowerPoint, 和Word文档
顶
原
荐
字数 591
阅读 1
收藏 0
NodeJS 使用 officegen 生成 Excel(.xlsx),PowerPoint(.pptx)和Word(.docx)文档
officegen 模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件。此模块不依赖于任何框架,您不需要安装Microsoft Office,因此您可以将它用于任何类型的JavaScript应用程序。输出也是流而不是文件,不依赖于任何输出工具。此模块应适用于支持Node.js 0.10或更高版本的任何环境,包括Linux,OSX和Windows。
此模块生成Excel(.xlsx),PowerPoint(.pptx)和Word(.docx)文档。 Officegen还支持带有嵌入数据的PowerPoint本机图表对象。
项目地址: https://github.com/Ziv-Barber/officegen
安装
git clone git://github.com/Ziv-Barber/officegen.git
npm install officegen
npm install Ziv-Barber/officegen#master
依赖模块
- archiver
- setimmediate
- fast-image-size
- xmlbuilder
- lodash
API
创建一个文档对象:
var officegen = require('officegen');
var myDoc = officegen ( '<type>' );
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 ); } });
基于 http 流创建文件
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 );
将数据放在文档对象中:
更改文档标题(pptx,ppsx,docx):
var pptx = officegen ({ 'type': 'pptx', 'title': '<title>' }); // or pptx.setDocTitle ( '<title>' );
以下只有在 word 中使用:
var docx = officegen ({ 'type': 'docx', 'subject': '...', 'keywords': '...', 'description': '...' }); // or docx.setDocSubject ( '...' ); docx.setDocKeywords ( '...' ); docx.setDescription ( '...' );
生成 ppt https://github.com/Ziv-Barber/officegen#powerpoint 参考
生成 word https://github.com/Ziv-Barber/officegen#word 参考
生成 excel https://github.com/Ziv-Barber/officegen#excel 参考
实例: https://github.com/Ziv-Barber/officegen#examples
使用 promise
官网中没有 promise 的例子, 我们需要自己改造
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();
© 著作权归作者所有
共有人打赏支持
anziguoer
参与源创会
“源创会”在线下联结了各位 OSCer,推广开源项目和理念,很荣幸有你的参与~
领取条件:参与过开源中国“源创会”的 OSCer 可以领取
十周年
开源中国十周岁啦~ 感谢 OSCer 一路同行
领取条件:领取开源报告并收获三位 OSCer 点亮即可领取
粉丝 27
博文 80
码字总数 39011
作品 0
海淀
程序员
相关文章 最新文章
用nodejs生成并导出word,找了下最好用的是officegen模块,可是在生成table表单的时候,没办法设置边框,table没有边框,请教有没有人用过,能不能生成边框,或者推荐其他的模板。...
带着阳
2016/08/03
74
0
简介: 在实际的项目开发中经常会遇到需要在不同的操作系统平台上统计 Microsoft Office 系列文档页数的要求。Apache POI 提供了一套完整的用于访问微软格式文档的 Java API。但是 Apache P...
IBMdW
2012/10/26
1K
0
VS2010是新一代全新开发 工具 属于全新的系统构架 VS2010旗舰版功能全景 Office 2010,是微软推出新一代办公软件,开发代号为Office 14,实际是第12个发行版。该软件共有6个版本,分别是初级版...
junwong
2012/03/09
0
0
VS2010新特性: Office Word 2010 Office Word 2010 增强了 Navigation Pane 特性,用户可在 Navigation Pane 中快速切换至任何一章节的开头(根据标题样式判断),同时也可在输入框中进行即...
junwong
2012/03/09
0
0
ABBYY PDF Transformer+图文识别软件,是一款可创建、编辑、添加注释以及将PDF文件转换为其他可编辑格式的通用工具,在创建或转换PDF时支持很多PDF文档格式,是日常办公的好帮手,大大提高了...
ABBYY
2016/01/13
24
0
没有更多内容
加载失败,请刷新页面
加载更多1. 引言 本篇博文主要介绍 IOC 容器的启动过程,启动过程分为两个步骤,第一个阶段是容器的启动阶段,第二个阶段是 Bean 实例化阶段,这两个阶段各自需要执行的步骤如下图,接下来会一一介绍...
firepation
20分钟前
1
0
观察者模式(Observer) 应用场景:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 Spring 中Observer 模式常用的地方是Listene...
职业搬砖20年
21分钟前
1
0
上溢(Overflow)和下溢(Underflow) Solidity能处理256位的整数。所以 2²⁵⁶-1 加1就会为0.这个就是Overflow 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF+ 0x00000000000000000000000000...
全部原谅
25分钟前
1
0
linux系统默认目录颜色是蓝色的,在黑背景下看不清楚,可以通过以下2种方法修改ls查看的颜色。 方法: 1、拷贝/etc/DIR_COLORS文件为当前主目录的 .dir_colors cp /etc/DIR_COLORS ~/.dir_co...
问题终结者
27分钟前
1
0
一、什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该开发板内置4个LED灯、一个加速传感器,...
bodasisiter
30分钟前
1
0
没有更多内容
加载失败,请刷新页面
加载更多以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 在 Laravel 中集成 API 文档生成器扩展包为 Dingo API 接口生成文档
- 使用Sphinx生成/管理文档
- Java 生成 PDF 文档
- 文档生成器 mkdocs
- Doxygen 3 发布,文档生成工具
- 如何使用 sphinx 来生成代码文档
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Big C++中文版
霍斯特曼 / 姚爱红 / 电子工业 / 2007-3 / 85.00元
本书是一本关于C++的优秀教材,南圣何塞州立大学知名教授Horstmann编写。全书深入探讨了C++的知识,并着重强调了安全的标准模板库;本书较厚,但它可用做程序设计专业学生的教材(两学期)。全书在介绍基础知识后,作者论及了一些高级主题。书中面向对象的设计一章探讨了软件开发生命周期问题,给出了实现类关联的实用提示。其他高级主题包括模板,C++标准模板库,设计模式,GUI,关系数据库以及XML等。本......一起来看看 《Big C++中文版》 这本书的介绍吧!