在做项目的时候,需要上传一些excel文件内容到服务器。但是,用户没有点击提交的时候,或者刷新到其他页面的时候,需要放弃本次操作。本来是想着用redis来做缓存,暂时存储。但由于用户未点击提交的情况比较负责,不太适合此场景。SO,推荐一个比较成熟的解决方案:
js-xlsx
。
话不多说,直接上代码:
1. 定义一个文件上传项:
<input type="file" id="excel-file">
-
下载js-xlsx的相应
xlsx.core.min.js
文件后引入
$('#excel-file').change(function(e) {
var files = e.target.files;
var fileReader = new FileReader();
fileReader.onload = function(ev) {
try {
var data = ev.target.result,
workbook = XLSX.read(data, {
type: 'binary'
}),
persons = [];
} catch (e) {
console.log('文件类型不正确');
return;
var fromTo = '';
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
console.log(fromTo);
persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
console.log(persons);
fileReader.readAsBinaryString(files[0]);
PS:这个是正常使用jquery解决的。But,我的就比较坑了,项目用的是angularjs 2,导致我有调试了半天,很坑,记录一下:
1. 定义一个文件上传项:
<input ng-model="agentIds" type="file" style="margin-left: 480px;" id="excel-file" onchange="angular.element(this).scope().readExcel(this.files)" >
- 下载js-xlsx的相应xlsx.core.min.js 文件后引入
$scope.readExcel = function(e) {
var files = e;
console.log(e);
var fileReader = new FileReader();
fileReader.onload = function(ev) {
try {
var data = ev.target.result,
workbook = XLSX.read(data, {
type: 'binary'
}),
persons = [];
} catch (e) {
console.log('文件类型不正确');
return;
var fromTo = '';
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
console.log(fromTo);
persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
var res = "";
for(var i = 0; i < persons.length; i++) {
res += persons[i].agentId + ",";
if(res.endWith(",")) {
res = res.substr(0, res.length-1);
$scope.agentIds = res;
console.log("------>"+ $scope.agentIds);
String.prototype.endWith=function(endStr){
var d=this.length-endStr.length;
return (d>=0&&this.lastIndexOf(endStr)==d)
fileReader.readAsBinaryString(files[0]);
官方地址:https://github.com/SheetJS/js-xlsx
最后,推荐一篇博客,对我帮助很大:前端读取Excel报表文件
在做项目的时候,需要上传一些excel文件内容到服务器。但是,用户没有点击提交的时候,或者刷新到其他页面的时候,需要放弃本次操作。本来是想着用redis来做缓存,暂时存储。但由于用户未点击提交的情况比较负责,不太适合此场景。SO,推荐一个比较成熟的解决方案:js-xlsx。话不多说,直接上代码: 1. 定义一个文件上传项:&lt;input type="file" id="excel-f...
我们在做项目的时候可能会遇到一些需要导入导出excel数据的功能,网上看到一个开源的插件可以实现相关的功能,于是今天就花了点时间看了下这个插件的一些使用。
插件github地址:https://github.com/SheetJS/js-xlsx/
参考文章:https://www.cnblogs.com/liuxianan/p/js-excel.html
代码如下:
<!DOCT...
代码如下: [removed] function readThis(){ var tempStr = “”; var filePath= document.all.upfile.value; var oXL = new ActiveXObject(“Excel.application”); var oWB = oXL.Workbooks.open(filePath); oWB.worksheets(1).select(); var oSheet = oWB.ActiveSheet; try{ for(var i=2;i<46;i++){ if(oSheet.Cells(i,2).value ==
var reader = new FileReader();
var file = file_obj.files[0];
reader.readAsBinaryString(file);
reader.onload = function (e) {
var data = e.target.result;
var wb = XLSX.read(data, {type: 'binary'});
sheetName = wb.SheetNames[0] // 获取文档中第一个sheet页签的名字
sheets = wb.Sheets[sheetName] // 获sheet名页签下的数据
var array=XLSX.utils.sheet_to_json(sheets)
js-xlsx 介绍
由Sheet
JS出品的
js-xlsx是一款非常方便的只需要纯
JS即可
读取和导出
excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格
文件格式)等十几种格式。本文全部都是以xlsx格式为例。
官方github:GitHub - Sheet
JS/sheet
js: Sheet
JS Community Edition -- Spreadsheet Data Toolkit
本文配套demo在线演示地址:
JS读取和导出
excel示例
网上看了很多前端导入Excel的文章,都不支持IE,所以打算记录一下。
使用js-xlsx前端读取Excel文件,把读取的表格数据放到页面的table中。例子如下
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF...
将excel表格导入到数据库,有多种办法,可以使用数据库管理工具,可以使用python写个脚本,也可以用java开发个小功能,还可以用php来开发。但是当条件受限的时候,没有工具,没有脚本运行环境,这几个现成的方法都无法施展。唯独javascript还能自由的运行,只能基于JavaScript来写脚本,读取excel文件,然后导入到数据库。
1、先准备两个知识点:
H5赋予了JavaScript读取本地文件的能力。
HTML5技术出现以后,提供了从本地读取文件的API,因此可以在前端使用JavaScr
项目下引入:npm install xlsx --save
需要调用组件处:import xlsx from 'xlsx'
页面添加:<input type="file" @change="changeFile" />
methods中添加函数:
changeFile(e) { var files = e.target.files; var fileReader = n...
要使用JavaScript读取Excel文件,您可以使用一些库或API来帮助解析和提取Excel数据。以下是两种常用的方法:
1. 使用第三方库:通过使用像`SheetJS`或`xlsx`这样的JavaScript库,您可以在浏览器中解析和读取Excel文件。这些库提供了一组API,可以将Excel文件转换为JavaScript对象或数组,以便进一步处理和使用。您可以通过在HTML页面中引入相关库的脚本文件,并使用其提供的API来读取Excel文件。例如,使用SheetJS库的示例代码如下:
```javascript
// 引入SheetJS库
<script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script>
// 选择文件和读取Excel数据
var fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = new Uint8Array(e.target.result);
var workbook = XLSX.read(data, { type: 'array' });
var sheetName = workbook.SheetNames[0];
var worksheet = workbook.Sheets[sheetName];
var jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
console.log(jsonData);
reader.readAsArrayBuffer(file);
请注意,上述示例代码假设您已经在HTML页面中定义了一个文件输入框,并具有ID为`fileInput`。
2. 使用HTML5 File API:HTML5 File API提供了一些功能,可以直接在浏览器中读取文件。您可以使用`FileReader`对象读取Excel文件,并按照需要解析和处理数据。以下是一个简单的示例:
```javascript
var fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = new Uint8Array(e.target.result);
// 在这里对data进行解析和处理
console.log(data);
reader.readAsArrayBuffer(file);
上述示例代码假设您已经在HTML页面中定义了一个文件输入框,并具有ID为`fileInput`。
请注意,这两种方法都依赖于浏览器的支持,并且可能有一些限制或兼容性问题。仔细阅读相关库或API的文档,并在使用之前进行适当的测试和兼容性检查。