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,如需转载请自行联系原作者
相关文章
|
7天前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
49 8
|
6月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
67 0
|
3月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
50 1
|
3月前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
328 3
|
3月前
|
Java API Apache
|
3月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
172 4
|
4月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
225 6
|
5月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
4月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
4月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
619 5

热门文章

最新文章