今天朋友说需要对100份 word 文件的内容进行录入工作,问我是否有什么方便的方法。假如最少1份按2分钟的速度算,也需要200分钟才可以录入完成。我一直都不喜欢做重复又无意义的工作,就想着能否用程序来对其进行处理,后面虽然也花了快一个钟的时间来编写代码和测试,但是当程序用了几分钟的时间就将需要的内容全部录入完成时,觉得还是挺开心的,而自己也学到了许多的东西,在这里记录下,我想以后应该也会用到。
使用 unoconv 处理 word
首先 word 文件是 .docx,在 Ubuntu 上,我们可以使用 unoconv 命令来解析 word 的文件,安装命令如下:
sudo apt-get install unoconv
通过 --help,我们可以知道 unoconv 的用法如下:
unoconv --stdout --format=html ./docx/test.docx
解析 test.docx 文件的内容,设置格式为 html,并且输出到标准输出中。
使用 shelljs 运行 shell 命令
这里使用的是熟悉的 nodejs 进行开发,而运行 shell 命令我使用的是 shelljs。
安装:
npm install shelljs
使用:
shelljs.exec('unoconv --stdout --format=html ./docx/test.docx', {silent: true}, function (code, result) {
代码如下 | 复制代码 |
if (code) { console.log('Error code: ' + code); return; } console.log(result); }); |
到这里已经可以将 word 的内容输出到 console 中了。
使用 jQuery 解析 html 内容
可以看到输入的内容为 html 代码,我们需要对其进行处理,这里使用的是熟悉的 jQuery。
安装:
npm install -S 'jquery@>=2.1'
npm install -S 'jsdom@latest'
关键代码:
代码如下 | 复制代码 |
env(data, function (errors, window) { $('p').each(function (i) { $('img').each(function (i) { if (matches.length !== 3) { var type = matches[1]; // 图片的类型 fs.writeFile('./images/' + i + '.jpg', data); |
使用 async 批量读取 word 文件
假如直接使用 forEach 的话会导致内存溢出,所以我们需要对每个文件进行排队处理,这里使用 async。
安装:
npm install async
使用:
代码如下 | 复制代码 |
fs.readdir('./docx', function (err, files) { function parse(file, callback) { |
搞定!!!当然这里只是简单的记录了大概的思路和代码,实际上需要根据不同的需要做对应的处理。
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级