layui导入excel表格文件

沟通交流群:
QQ群号: 555056599

github地址:
https://github.com/wangerzi/layui-excel

功能演示地址:
http://excel.wj2015.com

/**
 * 需要引用的外部文件
 */
<link rel="stylesheet" type="text/css" href="layui/css/layui.css">
<script type="text/javascript" src="layui/layui.js"></script>
<script type="text/javascript">
	layui.config({
		base: 'layui_exts/'
	}).extend({
		excel: 'excel'
	});
</script>
<!-- IE需要把JS放在上边,否则onclick失效 -->

/**
 * HTML5代码
 * 绑定input按钮
 */
<div class="layui-form-item">
	<div class="layui-form-label">导入操作</div>
	<div class="layui-form-block">
		<input type="file" class="layui-btn layui-btn-primary" id="LAY-excel-import-excel" multiple="multiple">
	</div>
</div>

/**
 * JavaScript代码
 */
layui.use(['jquery', 'layer', 'upload', 'excel', 'laytpl', 'element', 'code'], function(){
  var $ = layui.jquery;
  var layer = layui.layer;
  var upload = layui.upload;
  var excel = layui.excel;
  var laytpl = layui.laytpl;
  var element = layui.element;
   /**
    * 页面加载事件
    */
	$(function(){
	    // 监听上传文件的事件
	    $('#LAY-excel-import-excel').change(function(e) {
	      var files = e.target.files;
	      uploadExcel(files);
	    });
	    // 文件拖拽
	    $('body')[0].ondragover = function(e) {
	      e.preventDefault();
	    }
	    $('body')[0].ondrop = function(e) {
	      e.preventDefault();
	      var files = e.dataTransfer.files;
	      uploadExcel(files);
	    }
	  });
	});

	 /**
	  * 上传excel的处理函数,传入文件对象数组
	  * @param  {[type]} files [description]
	  * @return {[type]}       [description]
	  */
	 function uploadExcel(files) {
	   try {
	     excel.importExcel(files, {
	       // 读取数据的同时梳理数据
	       fields: {
	         'id': 'A'
	         ,'username': 'B'
	         ,'experience': 'C'
	         ,'sex': 'D'
	         ,'score': 'E'
	         ,'city': 'F'
	         ,'classify': 'G'
	         ,'wealth': 'H'
	         ,'sign': 'I'
	       }
	     }, function(data) {
	       // 还可以再进行数据梳理
		/*
		   data = excel.filterImportData(data, {
	         'id': 'A'
	         ,'username': 'B'
	         ,'experience': 'C'
	         ,'sex': 'D'
	         ,'score': 'E'
	         ,'city': 'F'
	         ,'classify': 'G'
	         ,'wealth': 'H'
	         ,'sign': 'I'
	       });
		*/
	      // 如果不需要展示直接上传,可以再次 $.ajax() 将JSON数据通过 JSON.stringify() 处理后传递到后端即可
	      $.ajax({
              url: '/article/inputExcel'
              , data:{data:data}
              , dataType: 'json'
              , success: function (res) {
                  if(res.code == 200){
                      layer.msg('导入成功',{icon:1,time:1000});
                  }
              }
          })
          //展示表格文件转换成的json数据格式
	      layer.open({
	         title: '文件转换结果'
	         ,area: ['799px', '399px']
	         ,tipsMore: true
	         ,content: laytpl($('#LAY-excel-export-ans').html()).render({data: data, files: files})
	         ,success: function() {
	           element.render('tab');
	           layui.code({
	           });
	         }
	       });
	     });
	   } catch (e) {
	     layer.alert(e.message);
	   }
	 };
 });
layui是一个轻量级的前端UI框架,它提供了一种简单的方式来生成表格并与Excel数据交互。利用layui的table组件,可以结合服务器端的数据处理或者前端直接读取Excel文件(例如通过FileReader API),将Excel中的内容解析成表格形式展示。 以下是基本步骤: 1. **导入layui库**:首先需要引入layui的CSS和JS文件到HTML页面中。 2. **创建表格元素**:在HTML里创建一个`<table>`元素作为容器,用于显示表格数据。 3. **处理Excel文件**:当用户选择一个Excel文件时,使用JavaScript的FileReader API读取文件内容。对于复杂的Excel文件,可能需要借助第三方库如js-xlsx或xlsx.js来解析Excel数据。 4. **数据转换**:解析后的数据通常是以二维数组的形式,需要将其转化为适合table插件的数据结构,比如layui的`tbody`数组。 5. **渲染表格**:调用layui的table方法,传入处理好的数据,设置列宽、表头等配置,动态生成表格。 6. **事件监听**:如果Excel数据有更新,可以根据需求实现实时刷新或者局部刷新的功能。 示例代码片段如下: ```javascript layui.use(['layer', 'table'], function () { var $ = layui.$, layer = layui.layer, table = layui.table; // 上传文件处理函数 $('#upload-file').on('click', function (e) { var fileInput = document.getElementById('file-input'); if (fileInput.files && fileInput.files[0]) { var reader = new FileReader(); reader.onload = function (event) { var data = JSON.parse(event.target.result); // 假设这里解析的是xlsx数据 // 转换为table需要的数据格式 var rowData = []; data.forEach(function (row) { rowData.push(row.map(function (cell) { return cell; })); }); table.render({ elem: '#myTable', data: rowData, ...其他配置... }); }; reader.readAsText(fileInput.files[0]); } }); }); ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值