node-webkit解析excel文档
来源:互联网 发布:智能温室数据监测系统 编辑:程序博客网 时间:2024/04/27 13:31
文章位置:https://github.com/Arnoldnuo/learn-nw/blob/master/node-webkit%E8%A7%A3%E6%9E%90excel%E6%96%87%E6%A1%A3.md
node-webkit可以使用nodejs的那一套的第三方扩展的,所以我们需要先去找一个可以解析excel的第三方扩展去。
由于我的windows系统总是无法编译c++写的第三方扩展,用npm安装c++写的第三方扩展总是报错,所以我找了一个非c++的第三方扩展————excel-parser,安装方法很简单,在cmd下进入你的项目的目录,在项目目录中新建一个node_modules文件夹(和index.html,package.json在同一层次),然后在cmd下输入"npm install excel-parser"安装该扩展。
本来我以为,安装成功以后就可以直接在项目中使用 require("excel-parser")来调用该解析功能了,但是失败了,怎么办,研究一下源码看能不能解决。
首先看excelParser.js中的excelParser.worksheets函数,这个函数是怎么处理excel文件的呢,下面代码是核心:
if(!exists) return cb("File not found");args = ['-x', path.relative(__dirname, options.inFile), '-W'];utils.execute(args, function(err, stdout) { if(err) return cb(err); worksheets = _.compact(stdout.split(/\n/)); if(worksheets) return cb(null, JSON.parse(worksheets)); else return cb(new Error("Not found any worksheet in given spreadsheet"));});
然后我们看一看utils.execute()
是干什么用的,我们找到utils.js里面关键代码是:
cmd.join(' '),{cwd: __dirname},function(err, stdout, stderr) { if(err) return cb(err); if(stderr) return cb(stderr); cb(null, stdout);}
主要是执行了一个cmd命令,我们看看这个命令执行的是什么呢? python convert.py
原来是执行了一个python脚本,看到这里,我们必须要配置python环境了,这个就不多说了,默认你已经搭建好了,没有搭建的话网上有很多教程的,记得要用python2.7的环境,python2和3不兼容。
搭建好了,如果发现报错信息是这样子的:xlrd is required to run this script,我们就需要查查xlrd是什么了。
xlrd是python实现的一个解析excel的文件,我们的扩展中现在没有,所以需要下载下来,下载地址,在这里下载下来以后,解压,把里面的xlrd文件夹复制到convert.py同一目录中,这时候可以执行了。
在解析某些excel的时候可能会报错unknown encoding: unknown_codepage_21010
google一下这个错误就会找到这个网页https://github.com/okfn/messytables/issues/47还有这个网页http://stackoverflow.com/questions/3511743/using-xlrd-to-read-excel-xls-file-containing-chinese-and-or-hindi-characters原来是编码的问题
看convert.py源码,是调用xlrd.open_workbook()函数来解析excel的,我们看看这个函数的实现 在init.py里面有一段代码
open_workbook(filename=None, logfile=sys.stdout, verbosity=0, use_mmap=USE_MMAP, file_contents=None, encoding_override=None, formatting_info=False, on_demand=False, ragged_rows=False,)
看到里面的encoding_override=None
了么,调用的时候需要指明编码格式
于是我们把convert.py中的workbook = xlrd.open_workbook(filename=inFile)
修改成workbook = xlrd.open_workbook(filename=inFile, encoding_override="cp1252")
(至于为什么是cp1252,上面的两个网页中如果仔细看,有解释)。
现在就不会出现unknown encoding: unknown_codepage_21010
的问题了。
至此,问题解决。
- node-webkit解析excel文档
- xlrd解析excel文档
- POI解析Excel文档
- ExceL文档2.上传解析Excel文档
- excel相关系列(2)---解析excel文档
- node.js上传并解析Excel文件
- 使用node.js 解析excel 表格
- node.js上传并解析Excel文件
- node-webkit使用教程
- node-webkit工程搭建
- node-webkit框架学习
- 深入浅出node-webkit
- 学习node-webkit
- Node-webkit 介绍
- Node-webkit程序打包
- node-webkit相关
- node-webkit Tips
- node-webkit支持sqlite
- ORACLE 11G RAC [INS-32026] The Software Location specified should not
- Wine完全使用完全指南(从初级到高级)
- Understanding Unix/Linux Programming 笔记:chapter 11:连接到近端或远端的进程:服务器与Socket(套接字)
- crontab不执行
- 10 Easy Image Hover Effects You Can Copy and Paste
- node-webkit解析excel文档
- maven部署web项目到tomcat7(兼容tomcat8)
- N!最末非零位数值
- 刚开始学servlet把自己刚写的一个小页面贴出来写的很粗糙
- Fedora安装与删除wine
- 在sys目录创建接口
- Gitblit 资源目录空白
- Web前端
- 6-3-2 二叉树层次遍历(BFS)