如何用Node.js实现Word文档的生成与解析,构建长尾关键词?

2026-04-09 02:551阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1324个文字,预计阅读时间需要6分钟。

如何用Node.js实现Word文档的生成与解析,构建长尾关键词?

一、介绍与需求

1.1 介绍

1、Officegen 模块可以生成 Microsoft Office 2007 及更高版本的 Office Open XML 文件。

1.2 需求

此模块不依赖于任何框架,您无需安装 Microsoft Office,即可将其用于生成各类文档。

一,介绍与需求

1.1,介绍

1, officegen 模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件。此模块不依赖于任何框架,您不需要安装Microsoft Office,因此您可以将它用于任何类型的JavaScript应用程序。输出也是流而不是文件,不依赖于任何输出工具。此模块应适用于支持Node.js 0.10或更高版本的任何环境,包括Linux,OSX和Windows。

2, textract 文本提取节点模块。

3, pdf2json 是一个节点。js模块解析和转换PDF从二进制到json格式,它是用PDF构建的。并通过浏览器外的交互式表单元素和文本内容解析对其进行扩展。其目标是在web服务中包装时启用带有交互式表单元素的服务器端PDF解析,并在作为命令行实用程序使用时启用将本地PDF解析为json文件。

1.2,需求

二,文件生成导出

第一步:安装 officegen

cnpm install officegen --save

第二步:引入officegen

var officegen = require('officegen'); var fs = require('fs'); var docx = officegen('docx');//word var pptx = officegen('pptx');//pptx

第三步:使用officegen docx

... docx.on('finalize', function (written) { console.log('Finish to create Word file.\nTotal bytes created: ' + written + '\n'); }); docx.on('error', function (err) { console.log(err); }); ... //var tows = ['id', 'provinceZh', 'leaderZh', 'cityZh', 'cityEn'];//创建一个和表头对应且名称与数据库字段对应数据,便于循环取出数据 var pObj = docx.createP({ align: 'center' });// 创建行 设置居中 大标题 pObj.addText('全国所有城市', { bold: true, font_face: 'Arial', font_size: 18 });// 添加文字 设置字体样式 加粗 大小 // let towsLen = tows.length let dataLen = data.length for (var i = 0; i < dataLen; i++) {//循环数据库得到的数据,因为取出的数据格式为 //[{"id" : "101010100","provinceZh" : "北京","leaderZh" : "北京","cityZh" : "北京","cityEn" : "beijing"},{…………},{…………}] /************************* 文本 *******************************/ // var pObj = docx.createP();//创建一行 // pObj.addText(`(${i+1}), `,{ bold: true, font_face: 'Arial',}); // pObj.addText(`省级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['provinceZh']} `,); // pObj.addText(`市级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['leaderZh']} `); // pObj.addText(`县区:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['cityZh']}`); /************************* 表格 *******************************/ let SingleRow = [data[i]['id'], data[i]['provinceZh'], data[i]['leaderZh'], data[i]['cityZh']] table.push(SingleRow) } docx.createTable(table, tableStyle); var out = fs.createWriteStream('out.docx');// 文件写入 out.on('error', function (err) { console.log(err); }); var result = docx.generate(out);// 服务端生成word res.writeHead(200, { // 注意这里的type设置,导出不同文件type值不同application/vnd.openxmlformats-officedocument.wordprocessingml.document "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 'Content-disposition': 'attachment; filename=out' + moment(new Date().getTime()).format('YYYYMMDDhhmmss') + '.docx' }); docx.generate(res);// 客户端导出word

第四步:抛出接口

router.put('/download/word', function (req, res) { console.log('exportWord-------------'); docx.on('finalize', function (written) { console.log('Finish to create Word file.\nTotal bytes created: ' + written + '\n'); }); docx.on('error', function (err) { console.log(err); }); let fields = { id: '', provinceZh: '', leaderZh: '', cityZh: '', cityEn: '' } var table = [ [{ val: "No.", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "7F7F7F", // themeFill: "text1", // "themeFillTint": "80" // }, // fontFamily: "Avenir Book" } }, { val: "省份", opts: { align: "center", vAlign: "center", sz: '36', // b:true, // color: "A00000", // align: "right", // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }, { val: "市", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }, { val: "区/县", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }], ] var tableStyle = { tableColWidth: 2400, tableSize: 24, tableColor: "ada", tableAlign: "center", tableVAlign: "center", tableFontFamily: "Comic Sans MS", borders: true } MongoDbAction.getFieldsByConditions('AllCity', {}, fields, function (err, data) {//根据需求查询想要的字段 if (err) { //执行出错 } else { //var tows = ['id', 'provinceZh', 'leaderZh', 'cityZh', 'cityEn'];//创建一个和表头对应且名称与数据库字段对应数据,便于循环取出数据 var pObj = docx.createP({ align: 'center' });// 创建行 设置居中 大标题 pObj.addText('全国所有城市', { bold: true, font_face: 'Arial', font_size: 18 });// 添加文字 设置字体样式 加粗 大小 // let towsLen = tows.length let dataLen = data.length for (var i = 0; i < dataLen; i++) {//循环数据库得到的数据,因为取出的数据格式为 //[{"id" : "101010100","provinceZh" : "北京","leaderZh" : "北京","cityZh" : "北京","cityEn" : "beijing"},{…………},{…………}] /************************* 文本 *******************************/ // var pObj = docx.createP();//创建一行 // pObj.addText(`(${i+1}), `,{ bold: true, font_face: 'Arial',}); // pObj.addText(`省级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['provinceZh']} `,); // pObj.addText(`市级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['leaderZh']} `); // pObj.addText(`县区:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['cityZh']}`); /************************* 表格 *******************************/ let SingleRow = [data[i]['id'], data[i]['provinceZh'], data[i]['leaderZh'], data[i]['cityZh']] table.push(SingleRow) } docx.createTable(table, tableStyle); var out = fs.createWriteStream('out.docx');// 文件写入 out.on('error', function (err) { console.log(err); }); var result = docx.generate(out);// 服务端生成word res.writeHead(200, { // 注意这里的type设置,导出不同文件type值不同application/vnd.openxmlformats-officedocument.wordprocessingml.document "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 'Content-disposition': 'attachment; filename=out' + moment(new Date().getTime()).format('YYYYMMDDhhmmss') + '.docx' }); docx.generate(res);// 客户端导出word } }); });

第五步:前端调用

下载调用方法

downloadWordOper() { // var url = "localhost:8880/api/v1/yingqi/download/word"; // window.location = url;//这里不能使用get方法跳转,否则下载不成功 this.$img.558idc.com/uploadfile/test.txt', data, function (err) { if (err) { throw err; } }); res.status(200).json({ httpCode: 200, message: '导入成功', data: { result: data }, returnValue: 1 }); }); }

第四步:解析后删除文档

fs.unlink(excelConfig.excel_Dir, function (err) { if (err) throw err; console.log("删除文件" + excelConfig.excel_Dir + "成功") })

第五步:抛出接口调用后的效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何用Node.js实现Word文档的生成与解析,构建长尾关键词?

标签:实现

本文共计1324个文字,预计阅读时间需要6分钟。

如何用Node.js实现Word文档的生成与解析,构建长尾关键词?

一、介绍与需求

1.1 介绍

1、Officegen 模块可以生成 Microsoft Office 2007 及更高版本的 Office Open XML 文件。

1.2 需求

此模块不依赖于任何框架,您无需安装 Microsoft Office,即可将其用于生成各类文档。

一,介绍与需求

1.1,介绍

1, officegen 模块可以为Microsoft Office 2007及更高版本生成Office Open XML文件。此模块不依赖于任何框架,您不需要安装Microsoft Office,因此您可以将它用于任何类型的JavaScript应用程序。输出也是流而不是文件,不依赖于任何输出工具。此模块应适用于支持Node.js 0.10或更高版本的任何环境,包括Linux,OSX和Windows。

2, textract 文本提取节点模块。

3, pdf2json 是一个节点。js模块解析和转换PDF从二进制到json格式,它是用PDF构建的。并通过浏览器外的交互式表单元素和文本内容解析对其进行扩展。其目标是在web服务中包装时启用带有交互式表单元素的服务器端PDF解析,并在作为命令行实用程序使用时启用将本地PDF解析为json文件。

1.2,需求

二,文件生成导出

第一步:安装 officegen

cnpm install officegen --save

第二步:引入officegen

var officegen = require('officegen'); var fs = require('fs'); var docx = officegen('docx');//word var pptx = officegen('pptx');//pptx

第三步:使用officegen docx

... docx.on('finalize', function (written) { console.log('Finish to create Word file.\nTotal bytes created: ' + written + '\n'); }); docx.on('error', function (err) { console.log(err); }); ... //var tows = ['id', 'provinceZh', 'leaderZh', 'cityZh', 'cityEn'];//创建一个和表头对应且名称与数据库字段对应数据,便于循环取出数据 var pObj = docx.createP({ align: 'center' });// 创建行 设置居中 大标题 pObj.addText('全国所有城市', { bold: true, font_face: 'Arial', font_size: 18 });// 添加文字 设置字体样式 加粗 大小 // let towsLen = tows.length let dataLen = data.length for (var i = 0; i < dataLen; i++) {//循环数据库得到的数据,因为取出的数据格式为 //[{"id" : "101010100","provinceZh" : "北京","leaderZh" : "北京","cityZh" : "北京","cityEn" : "beijing"},{…………},{…………}] /************************* 文本 *******************************/ // var pObj = docx.createP();//创建一行 // pObj.addText(`(${i+1}), `,{ bold: true, font_face: 'Arial',}); // pObj.addText(`省级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['provinceZh']} `,); // pObj.addText(`市级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['leaderZh']} `); // pObj.addText(`县区:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['cityZh']}`); /************************* 表格 *******************************/ let SingleRow = [data[i]['id'], data[i]['provinceZh'], data[i]['leaderZh'], data[i]['cityZh']] table.push(SingleRow) } docx.createTable(table, tableStyle); var out = fs.createWriteStream('out.docx');// 文件写入 out.on('error', function (err) { console.log(err); }); var result = docx.generate(out);// 服务端生成word res.writeHead(200, { // 注意这里的type设置,导出不同文件type值不同application/vnd.openxmlformats-officedocument.wordprocessingml.document "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 'Content-disposition': 'attachment; filename=out' + moment(new Date().getTime()).format('YYYYMMDDhhmmss') + '.docx' }); docx.generate(res);// 客户端导出word

第四步:抛出接口

router.put('/download/word', function (req, res) { console.log('exportWord-------------'); docx.on('finalize', function (written) { console.log('Finish to create Word file.\nTotal bytes created: ' + written + '\n'); }); docx.on('error', function (err) { console.log(err); }); let fields = { id: '', provinceZh: '', leaderZh: '', cityZh: '', cityEn: '' } var table = [ [{ val: "No.", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "7F7F7F", // themeFill: "text1", // "themeFillTint": "80" // }, // fontFamily: "Avenir Book" } }, { val: "省份", opts: { align: "center", vAlign: "center", sz: '36', // b:true, // color: "A00000", // align: "right", // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }, { val: "市", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }, { val: "区/县", opts: { align: "center", vAlign: "center", sz: '36', // cellColWidth: 42, // b:true, // sz: '48', // shd: { // fill: "92CDDC", // themeFill: "text1", // "themeFillTint": "80" // } } }], ] var tableStyle = { tableColWidth: 2400, tableSize: 24, tableColor: "ada", tableAlign: "center", tableVAlign: "center", tableFontFamily: "Comic Sans MS", borders: true } MongoDbAction.getFieldsByConditions('AllCity', {}, fields, function (err, data) {//根据需求查询想要的字段 if (err) { //执行出错 } else { //var tows = ['id', 'provinceZh', 'leaderZh', 'cityZh', 'cityEn'];//创建一个和表头对应且名称与数据库字段对应数据,便于循环取出数据 var pObj = docx.createP({ align: 'center' });// 创建行 设置居中 大标题 pObj.addText('全国所有城市', { bold: true, font_face: 'Arial', font_size: 18 });// 添加文字 设置字体样式 加粗 大小 // let towsLen = tows.length let dataLen = data.length for (var i = 0; i < dataLen; i++) {//循环数据库得到的数据,因为取出的数据格式为 //[{"id" : "101010100","provinceZh" : "北京","leaderZh" : "北京","cityZh" : "北京","cityEn" : "beijing"},{…………},{…………}] /************************* 文本 *******************************/ // var pObj = docx.createP();//创建一行 // pObj.addText(`(${i+1}), `,{ bold: true, font_face: 'Arial',}); // pObj.addText(`省级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['provinceZh']} `,); // pObj.addText(`市级:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['leaderZh']} `); // pObj.addText(`县区:`,{ bold: true, font_face: 'Arial',}); // pObj.addText(`${data[i]['cityZh']}`); /************************* 表格 *******************************/ let SingleRow = [data[i]['id'], data[i]['provinceZh'], data[i]['leaderZh'], data[i]['cityZh']] table.push(SingleRow) } docx.createTable(table, tableStyle); var out = fs.createWriteStream('out.docx');// 文件写入 out.on('error', function (err) { console.log(err); }); var result = docx.generate(out);// 服务端生成word res.writeHead(200, { // 注意这里的type设置,导出不同文件type值不同application/vnd.openxmlformats-officedocument.wordprocessingml.document "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 'Content-disposition': 'attachment; filename=out' + moment(new Date().getTime()).format('YYYYMMDDhhmmss') + '.docx' }); docx.generate(res);// 客户端导出word } }); });

第五步:前端调用

下载调用方法

downloadWordOper() { // var url = "localhost:8880/api/v1/yingqi/download/word"; // window.location = url;//这里不能使用get方法跳转,否则下载不成功 this.$img.558idc.com/uploadfile/test.txt', data, function (err) { if (err) { throw err; } }); res.status(200).json({ httpCode: 200, message: '导入成功', data: { result: data }, returnValue: 1 }); }); }

第四步:解析后删除文档

fs.unlink(excelConfig.excel_Dir, function (err) { if (err) throw err; console.log("删除文件" + excelConfig.excel_Dir + "成功") })

第五步:抛出接口调用后的效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

如何用Node.js实现Word文档的生成与解析,构建长尾关键词?

标签:实现