Node.js生成Word文档

因为要写一些Word文档,但是重复性的太多,闲着没事,就想着研究了一下用代码生成word文档。
百度了一下,基本上使用的是officegen这个框架,直接上代码例子:

var officegen = require('officegen');
var fs    = require('fs');
var path  = require('path');
var docx  = officegen ( 'docx' );
var async = require('async');

var header = docx.getHeader ().createP ({align:('center')});

console.log(__dirname);

header.addText ( '公司名称',{font_size:8,font_face:'SimSun' });
header.addHorizontalLine();

var pObj = docx.createP();
pObj.options.align = 'center';
pObj.addText("样品检测流程卡", {font_size:20,font_face:'KaiTi_GB2312'});

var firstTable = [
    [{
        val:"共 1 页 第 1 页",
        opts:{
            b:true,
            sz:20,
            align:"left"
        }
    },{
        val:"编号:",
        opts:{
            b:true,
            sz:20,
            align:"right"
        }
    }]
];
var tableStyle = {
    tableColWidth: 5500,
    tableFontFamily: "Times New Roman",
}
var pObj = docx.createTable(firstTable,tableStyle);

var table = [
    [{
        val:"样品名称",
        opts:{
            b:true,
            sz:'20',
            align:"left"
        }
    },{
        val:"电源适配器",
        
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"样品数量",
        
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"         ",
        opts:{
  
            b:true,
            sz:20,
        }
    },{
        val:"报告编号",
        opts:{

            b:true,
            sz:20,
            align:"left"
        }
    },{
        val:"A-123456-ABC123456-201704392-D",
        opts:{
            b:true,
            sz:20,
            align:"center"
        }
    }],

    [{
        val:"型号规格",
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"",
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"要求完成日期",
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"2017.5.19",
        opts:{
            b:true,
            sz:20,
        }
    },{
        val:"委托单位",
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    },{
        val:"电子股份有限公司",
        opts:{

            b:true,
            sz:20,
            align:"center"
        }
    }]
];

var tableStyle = {
    tableColWidth: 5000,
    tableSize: 20,
    borders:true
}
var pObj = docx.createTable (table, tableStyle);
var out  = fs.createWriteStream ( 'out.docx' );// 文件写入
out.on ( 'error', function ( err ) {
    console.log ( err );
});
var result = docx.generate (out);// 服务端生成word

因为基本上的text,在Git上的demo介绍,基本上能满足使用,但是如果使用table较多的话,demo上的一下介绍并不是很详细,所以需要自己去看源码也就是docxtable.js去看一看具体的属性。
Git-officegen-demo:https://github.com/Ziv-Barber/officegen

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为要写一些Word文档,但是重复性的太多,闲着没事,就想着研究了一下用代码生成word文档。百度了一下,基本上使...
    静谧的橘子阅读 6,699评论 1 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,898评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • http://blog.sina.com.cn/s/blog_9498c8b60101d7x5.html http...
    中國壹石頭阅读 204评论 0 1
  • ❤人生不加速,重在节奏感。这是道德经里说的,拿来引用。节奏感的前提,得动。今天你动了吗?感谢鸭梨,差异就是生产力;...
    雅璇阅读 310评论 0 2