ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

简介:

系列目录

前言

上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看:

ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出

本节演示一些比较复杂的模型场景

情景

上次的场景:(标准的Excel表格格式)

制定的场景:(指定表模的场景,多张sheet,不是横排的形式)

实现

实现思路:利用LinqToExcel循环读取Sheet,再循环读取Sheet指定单元格的内容

(其实Excel是一个二维数组,可以直接读取诸如:B1:C1的单元格数据)

上次的代码我们已经有了上传Excel功能,这次就不需要放出上传代码了。

在业务层添加校验Excel的方法:可以效仿上次的普通导入

public bool CheckImportBatchData(string fileName, List<Spl_PersonModel> personList, ref ValidationErrors errors)  

头部分同样保持不变:

复制代码
        var targetFile = new FileInfo(fileName);

            if (!targetFile.Exists)
            {

                errors.Add("导入的数据文件不存在");
                return false;
            }

            var excelFile = new ExcelQueryFactory(fileName);
复制代码

下面是核心代码:

1.获得Excel所有的sheet

var sheetList = excelFile.GetWorksheetNames();//IEnumberable

由于其返回类型是IEnumberable所有我们直接一个foreach就全出来了

2.获得sheet内部的表格数据

foreach (var sheet in sheetList)
{
    //获得sheet对应的数据
    var data = excelFile.WorksheetNoHeader(sheet).ToList();
}

视乎到这一步都很简单了!接下来我们只要分解data的数据即可,经过跟踪data是一个二维数据

 

3.获得单元格内容

好了,现在更加清晰了,我要获得光头强两个字。那么只需要data[2][3]就可以了

//判断信息是否齐全
if (data[1][2].Value.ToString() == "")
{
    errorMessage.Append("姓名不能为空");
}

4.模型校验成功后,添加到List中来,最后集合添加到数据库

复制代码
   var person = new Spl_PersonModel();
                person.Id = "";
                person.Name = data[1][2].Value.ToString();
                person.Sex = data[2][2].Value.ToString();
                person.Age = Convert.ToInt32(data[3][2].Value);
                person.IDCard = data[4][2].Value.ToString();
                person.Phone = data[5][2].Value.ToString();
                person.Email = data[6][2].Value.ToString();
                person.Address = data[7][2].Value.ToString();
                person.Region = data[8][2].Value.ToString();
                person.Category = data[9][2].Value.ToString();
复制代码

5.保存数据调用简单类型的即可

还是 public void SaveImportData(IEnumerable<Spl_PersonModel> personList)方法

 

总结

效果还是一样的

扩展

如果有时候你的文件处理的逻辑很多,时间好几秒,那么你可能需要加个进度提示

简单的loading代码如下:(开始导入时候调用,结束的时候关闭。)

复制代码
 <div id="over" class="over"></div>
 <div id="layout" class="layout"><img src="~/Content/images/loading.gif" /></div>

<script type="text/javascript">
        function showLoading() {
                $("#over").show();
                $("#layout").show();
            }
            function hideLoading()
            {
                $("#over").hide();
                $("#layout").hide();
            }
        </script>
  <style type="text/css"> .over{top:0;left:0;z-index:9999999;width:100%;height:100%;opacity:.5}.layout,.over{position:absolute;display:none}.layout{top:40%;left:40%;z-index:100000000;width:20%;height:20%;text-align:center} </style>
复制代码

效果如下:

有时候我们的表模就是这样的,并不是都是列表形式,这是,这个方法就帮到我你,简单粗暴

下载代码:动手体验一下,稳固知识

链接:http://pan.baidu.com/s/1i48Lg8l 密码:vq0g

本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/6089982.html,如需转载请自行联系原作者
相关文章
|
3月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
5月前
基于EasyUI的后台管理系统页面原型_示例图_下载地址
基于EasyUI的后台管理系统页面原型_示例图_下载地址
34 0
|
3月前
|
前端开发 JavaScript
使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件
本文介绍了在Vue项目中使用`xlsx`和`xlsx-style`(或`xlsx-style-vite`)库实现导出具有自定义样式的Excel文件的方法,并提供了详细的示例代码和操作效果截图。
763 2
使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件
|
3月前
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
128 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
3月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
3月前
|
开发框架 .NET API
分享一个 ASP.NET Web Api 上传和读取 Excel的方案
分享一个 ASP.NET Web Api 上传和读取 Excel的方案
114 0
|
6月前
|
Java Apache 索引
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
926 0
|
6月前
如何将Excel两列数据转换为统计图、曲线图、折线图?如何自定义某一列作为Excel的统计图横纵坐标?
如何将Excel两列数据转换为统计图、曲线图、折线图?如何自定义某一列作为Excel的统计图横纵坐标?
|
6月前
|
JavaScript
【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作
【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作
【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作
|
JSON Java 应用服务中间件
利用esaypoi自定义Excel表格模板导入与导出表单数据
今天工作中又遇到了excel导出数据的功能,在这里我将自己自定义的Excel模板和相关的代码拿出来,解释一下如何进行操作,以便日后能够方便的进行功能开发,提高效率。
694 0