JS客户端读取Excel文件插件js-xls使用方法
js-xls是一款客户端读取Excel的插件,亲测IE11、FireFox、Chrome可用,读取速度也可观。
插件Demo地址:http://oss.sheetjs.com/js-xlsx/ http://oss.sheetjs.com/js-xls/
Excel列信息
js代码如下:
- var X = XLS;
- function to_json(workbook) {
- var result = {};
- workbook.SheetNames.forEach(function (sheetName) {
- var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
- if (roa.length > 0) {
- result[sheetName] = roa;
- }
- });
- return result;
- }
- function fixdata(data) {
- var o = "", l = 0, w = 10240;
- for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
- o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
- return o;
- }
- function process_wb(wb,type) {
- var output = "";
- switch (type) {
- case "json":
- output = JSON.stringify(to_json(wb), 2, 2);
- break;
- case "form":
- output = to_formulae(wb);
- break;
- default:
- output = to_csv(wb);
- }
- //if (out.innerText === undefined) out.textContent = output;
- //else out.innerText = output;
- return output;
- }
47- function ReadExcel(out) {
- var selCodes = $("#selProductCodes").val();
- var exlData = JSON.parse(out);
- var regCode = /^[1-9]\d*$/;
- var regQty = /^\d*$/;
- var ids = [];
- var msg = "";
- if (exlData.Sheet1 == null || exlData.Sheet1 == undefined) {
- msgErro("未查询到Excel文件中的数据!");
- saveLoading('hide');
- return;
- }
- for (var i = 0; i < exlData.Sheet1.length; i++) {
- var sysno = exlData.Sheet1[i].ProductSysNo;
- var qty = exlData.Sheet1[i].Qty;
- if (sysno == undefined)
- msg += "Qty列数据为 " + qty + " 的行,缺少ProductSysNo信息!\r\n";
- else if (qty == undefined)
- msg += "ProductSysNo列数据为 " + sysno + " 的行,缺少Qty信息!\r\n";
- else if (!regCode.test(sysno))
- msg += "ProductSysNo列数据为 " + sysno + " 不是有效的商品编号!\r\n";
- else if (!regQty.test(qty))
- msg += "Qty列数据为 " + qty + " 不是有效的数量格式!\r\n";
- else {
- ids.push(sysno);
- }
- }
//do something
}- var xlf = document.getElementById('xlf'); //<input type="file" id="xlf" />
- function handleFile(e) {
- if (e.target.files[0].name.indexOf(".xls") < 0) {
- msgErro("请选择.xls格式文件!");
- return;
- }
- saveLoading('show');
- rABS = false;
- use_worker = false;
- var files = e.target.files;
- var output = "";
- var f = files[0];
- {
- var reader = new FileReader();
- var name = f.name;
- reader.onload = function (e) {
- if (typeof console !== 'undefined') console.log("onload", new Date(), rABS, use_worker);
- var data = e.target.result;
- if (use_worker) {
- xw(data, process_wb);
- } else {
- var wb;
- if (rABS) {
- wb = X.read(data, { type: 'binary' });
- } else {
- var arr = fixdata(data);
- wb = X.read(btoa(arr), { type: 'base64' });
- }
- output = process_wb(wb, "json");
- ReadExcel(output);
- }
- };
- if (rABS) reader.readAsBinaryString(f);
- else reader.readAsArrayBuffer(f);
- }
- }
- if (xlf.addEventListener) xlf.addEventListener('change', handleFile, false);
js-xls插件下载地址:下载插件
JS客户端读取Excel文件插件js-xls使用方法的更多相关文章
- C# 读取EXCEL文件的三种经典方法
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...
- ASP.NET读取EXCEL文件的三种经典方法(转)
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:public DataSet ExcelToDS(string Path) { str ...
- ASP.NET读取EXCEL文件的三种经典方法
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { ...
- (转)C# 读取EXCEL文件的三种经典方法
原文地址http://www.open-open.com/code/view/1420029490093 1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取 ...
- R读取excel文件乱码 read.xlsx() 解决方法
1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题 该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...
- 转:C# 读取EXCEL文件的三种经典方法
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...
- Java读取Excel文件(包括xls和xlsx)的样例程序
样例程序如下所示,其中: parseXls()函数依赖于jxl,只能读取xls格式文件: parseExcel()函数依赖于apache poi,能够读取xls和xlsx两种格式的文件. jxl的依赖 ...
- .Net读取Excel文件时丢失数据的问题 (转载)
相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...
- Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决
1.问题描述: 该错误通常发生在应用函数读取excel文件(后缀xls或xlsx)时. 应用xlsread函数读取提示服务器出现意外情况: 应用importdata读取时提示can‘t open fi ...
随机推荐
- mysql innodb myisam 主要区别与更改方法
一.主要区别 1.事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好. 2.select ,update ,insert ,delete 操作 ...
- Spring4.0学习笔记(5) —— 管理bean的生命周期
Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务 Spring IOC 容器对Bean的生命周期进行管理的过程: 1.通过构造器或工厂方法 ...
- Html jquery实现根据 IOS和Android访问跳转
<script src="js/jquery-1.7.1.min.js" type="text/javascript"></script> ...
- 转载:Linux的vim三种模式
一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字. 编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式:在一般模式下按: ...
- 读书笔记 -part1
自从毕业以后到现在~看的书是越来越少了 の其实好像貌似从来没有认认真真的看书 除非工作遇到难于解决的问题迫不得已才去翻书看 有些问题也是莫名其妙的就这样解决了 于是乎被人美名其曰“高人”或&quo ...
- Linux下动态链接库和静态链接库
第一部分:编译过程 先了解一下linux下C代码的编译过程,C代码的编译,一般分成四个阶段,包括:预编译,编译,汇编和链接,这四个阶段的分工是 预处理过程,负责头文件展开,宏替换,条件编译的选择,删除 ...
- php发送post请求的三种方法示例
本文分享下php发送post请求的三种方法与示例代码,分别使用curl.file_get_content.fsocket来实现post提交数据,大家做个参考. php发送post请求的三种方法,分别使 ...
- nginx配置记录
user www-data;worker_processes 1; error_log /var/log/nginx/error.log;pid /var/run/nginx.pid; events ...
- PHP之mysql笔记
1:在php中提供了两个用于连接MySQL数据库服务器的函数. (1)int mysql_connect(hostname[:port][:/path/to/socket],user,pass). ( ...
- LED驅動電路概述
LED是一種固體光源,當它兩端加上正向電壓,半導體中的少數載流子和多數載流子發生復合,放出的過剩能量將引起光子發射.采用不同的材料,可制成不同顏色有 發光二極管 . 隨著對LED研究的進一步深入,其光 ...