我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解使用Node.js 将txt文件转为Excel文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解使用Node.js 将txt文件转为Excel文件

最近同事需要对一份报告进行整理,一共有80个报告约9000多行放在一个txt文件中。虽然每份报告的格式比较类似,但其中部分字段对应的数量依旧会有差别。所以真要靠人工来做,无疑会是一件费时费力的并且是很枯燥的工作。据说如果有了这个程序,可以减少60%的工作量!那么为了我以后的下午茶,自然应该去尝试一下不是么?

不过既然是费时费力又枯燥的工作,自然就应该交给代码去解决。毕竟,我坚信任何的科学技术就是为了让人类偷懒而存在的。那么就先切入正题,先上GitHub的项目地址。欢迎批评指点。

GitHub项目:report-maker

项目分析

既然准备要上代码了,作为一个狂热的前端爱好者,自然首选Node.js了。这一个项目主要的目的就是将txt文件中的内容按照一定的规则转化为固定格式的表格并导出为Excel。那么重点就可以分为下面两步了。

Excel文件的生成 txt内容的整理

1. Excel文件的生成

Excel文件自然是寻找可以依赖的模块了(毕竟我自己写不出来)。找了一圈,发现js-xlsx这一个模块。虽然看起来很复杂,但其实只要提供好表头和内容就可以,其余只是对于内容数据整理的固定模板。

相关教程可以参考下面这篇,讲的比较详细所以这里就不多做赘述了。

参考教程:使用node-xlsx进行excel文件的读写

2. txt内容的整理

解决了Excel导出的问题(不然就得换Py了呢),文档内容的整理便是这个项目最重要的问题了。最终整理的表格样式以及需要抽出的项目内容已经和同事确认过了。那么接下来就是如何整理了一个有着80个长短不一报告的文件了。

首先来看看文件的格式,整个文件的格式类似于下面这样。


 Policy Name:  policyName1
 ……省略中间内容……
 Policy Type:  Standard (0)
 ……省略中间内容……
 Client/HW/OS/Pri/CIT: Client1
 Client/HW/OS/Pri/CIT: Client2
 Client/HW/OS/Pri/CIT: Client3
 Client/HW/OS/Pri/CIT: Client4
 ……省略多个Client
 Include:   /dir1
 Include:   /dir2
 Include:   /dir3
 ……省略多个Include
 Schedule:    Schedule1
  Type:
  ……
 Schedule:    Schedule2
  Type:
  ……
 ……省略多个Schedule

 Policy Name:  policyName2
 ……省略中间内容……
 ……

可以看出,每一个段落是以Policy Name为分界的。那么,利用fs.readFile将完整的文件读取进来,作为一个字符串使用split方法进行切割。具体代码如下:


fs.readFile(filePath, 'UTF-8', function (err, data) {
 if (err) throw err;
 // 对文件读取的数据进行处理,首先用 policyName 进行切割
 var policyLists = data.split(config.splitRules.policyName);
 if (policyLists[0] === 'rn') {
 policyLists.shift();
 };

然后针对数组中每一个元素(一个段落)根据之前文件中所需要项目,使用正则表达式切提取出所需要的内容,然后将提取出的内容组成所需要的数据结构,具体代码如下。其中schedule项目中内容也并非在一行中,所以也同样使用上面的方法进行切割。而对于其他的项目,则通过正则表达式来进行内容的获取。


 policyLists.forEach(function (policy) {
 var policyData = policyFormatter(config.splitRules.policyName + policy);
 excelData.push(policyData);
 });


function policyFormatter(policy) {

 var policyNameMatcher = new RegExp(config.splitRules.policyName + "([\s\w\d\-]*)\r\n"),
 clientMatcher = new RegExp(config.splitRules.client + "([\s\w\d\?\-\.]*)\r\n", "g"),
 policyTypeMatcher = new RegExp(config.splitRules.policyType + "([\s\w\d\(\)\-]*)\r\n"),
 includeMatcher = new RegExp(config.splitRules.include + "([\s/\w\.\\:_\?=\"\*]*)\r\n", "g");

 var scheduleLists = policy.split(config.splitRules.schedule).slice(1),
 scheduleFormatLists = [],
 scheduleResidenceMatcher = new RegExp(config.splitRules.scheduleResidence + "([\s\w\d\-\(\)]*)\r\n");

 scheduleLists.forEach(function (schedule) {
 var scheduleFormat = config.splitRules.schedule + schedule;
 scheduleFormatLists.push(scheduleFormat);
 });

 // console.log(scheduleFormatLists);

 var results = {
 policyName: policy.match(policyNameMatcher)[1].trim(),
 client: policy.match(clientMatcher) ? policy.match(clientMatcher).join('').trim() : '',
 policyType: policy.match(policyTypeMatcher)[1].trim(),
 include: policy.match(includeMatcher).join('').trim(),
 schedule: scheduleFormatLists.join('').trim(),
 scheduleResidence: scheduleLists[0].match(scheduleResidenceMatcher)[1].trim()
 };

 // console.dir(results);
 return results;
}

主要逻辑处理完以后,把收集到的内容传给excel处理模块,导出成文件就能解决问题了。

不过似乎最终如果能导出为Word,似乎更好。看来还有新的改进空间还留着呢。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解使用Node.js 将txt文件转为Excel文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解使用Node.js 将txt文件转为Excel文件

最近同事需要对一份报告进行整理,一共有80个报告约9000多行放在一个txt文件中。虽然每份报告的格式比较类似,但其中部分字段对应的数量依旧会有差别。所以真要靠人工来做,无疑会是一件费时费力的并且是很枯燥的工作。据说如果有了这个程序,可以减
2022-06-04

将Excel文件转为csv文件的pyth

#!/usr/bin/env python __author__ = "lrtao2010"'''Excel文件转csv文件脚本需要将该脚本直接放到要转换的Excel文件同级目录下支持xlsx 和 xls 格式在同级目录下生成名为excel
2023-01-30

Java实现将TXT文本文件转换为PDF文件

Java实现TXT文本文件转换为PDF文件通过Java的iText库,可以将TXT文本文件转换为PDF文件,步骤如下:导入iText库并创建PDF文档。读取TXT文件内容并添加到PDF文档。关闭PDF文档,完成转换。优点:简单易用可定制跨平台注意事项:确保TXT文件编码正确。大文件转换可能需时。可使用压缩算法减小PDF文件大小。
Java实现将TXT文本文件转换为PDF文件
2024-04-02

Linux中如何将txt文件转为png格式

目录linux将txt文件转为png格式如果文本中没有中文,使用enscript如果编程客栈文本包含中文,使用paps解决方法Linux下PNG、JEPG、JPG、Webp图片格式互转环境webp使用说明批量转换总结Linux将txt文件转
2023-06-17

如何使用vbs将HTML或txt文件转换为ASP输出

这篇文章将为大家详细讲解有关如何使用vbs将HTML或txt文件转换为ASP输出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用方法:手工修改html文件的名称与想要生成的asp的文件名称,然后将下面的
2023-06-08

R语言怎么将大型Excel文件转为dta格式详解

这篇文章将为大家详细讲解有关R语言怎么将大型Excel文件转为dta格式详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文以2000年度我国工业企业数据库为例,该文件后缀名为xlsx,包含约16万条记
2023-06-08

C#怎么将Word或Excel文档转换为Html文件

这篇文章主要介绍“C#怎么将Word或Excel文档转换为Html文件”,在日常操作中,相信很多人在C#怎么将Word或Excel文档转换为Html文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么将
2023-07-02

如何利用Python将txt文件录入Excel表格

今天就跟大家聊聊有关如何利用Python将txt文件录入Excel表格,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我们的手头有一个写满数据的txt文件,如何将它录入Excel表格呢
2023-06-21

php如何读取txt文件并将其转为数组

这篇文章主要介绍“php如何读取txt文件并将其转为数组”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何读取txt文件并将其转为数组”文章能帮助大家解决问题。一、打开文本文件在PHP中,我们
2023-07-05

如何使用Node读写txt和Excel文件

今天小编给大家分享一下如何使用Node读写txt和Excel文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先给出文件的
2023-07-04

如何用phpexcel将Excel文件转成CSV文件并打开

这篇“如何用phpexcel将Excel文件转成CSV文件并打开”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用phpe
2023-07-05

怎么使用POI将HTML文件转换为Word文档

这篇文章主要讲解了“怎么使用POI将HTML文件转换为Word文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用POI将HTML文件转换为Word文档”吧!首先,我们需要在代码中添加
2023-07-06

编程热搜

目录