读取Excel 类 我返回的是DataTable 类型 也可以返回DataSet类型

public class XlsFileHelper
{

  public DataTable ImportExcel(Stream filePath)
  {
    DataTable dt = new DataTable();
    try
    {
      //打开文件,参数可以是文件的路径,也可以直接传入一个文件流
      Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(filePath);
      //获取sheet表
      Aspose.Cells.WorksheetCollection worksheets = workbook.Worksheets;
      Aspose.Cells.Worksheet worksheet = null;
      Aspose.Cells.Cells cell = null;

      //默认第一行为列名 所以第一行不读,索引从第二行开始
      int rowIndex = 0;

      //从第一列读取
      int colIndex = 0;
      for (int i = 0; i < worksheets.Count; i++)
      {
        worksheet = worksheets[i];
        //获取每个sheet表的所有单元格
        cell = worksheet.Cells;
        dt = cell.ExportDataTableAsString(rowIndex, colIndex, cell.MaxDataRow + 1, cell.MaxDataColumn + 1, true);

        //表
        dt.TableName = "table" + i.ToString();
      }
      worksheets.Clear();
      worksheet = null;
      worksheets = null;
      workbook = null;
    }
    catch (Exception ex)
    {
      throw;
    }
    return dt;
  }
}

读取excel文件的控制器方法,我传入的是一个HttpPostedFileBase

/// <summary>
/// 导入Excel文件
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult Daoru(HttpPostedFileBase file)
{
  var result = new OperationResult();

  //名单类list
  List<MingDan> list = new List<MingDan>();
  try
  {
    XlsFileHelper helper = new XlsFileHelper();

    //导入excel文件的方法(参数:IO流)
    var data = helper.ImportExcel(file.InputStream);

    //for循环获取表中列名值,长度小于表行数
    for (int i = 0; i < data.Rows.Count; i++)
    {
      MingDan mingdan = new MingDan();

      //姓名
      mingdan.Name = data.Rows[i][0].ToString();

      //证件类型
      mingdan.CardType = data.Rows[i][1].ToString();

      //证件号码
      mingdan.CardCode = data.Rows[i][2].ToString();

      //因为Aspose.Cells方式读取的是整个excel文件 包括它的工作簿,所以我在身份证号为空时中断循环
      if (string.IsNullOrWhiteSpace(mingdan.CardCode))
      {
        break;
      }

      //出生日期
      mingdan.Birth = data.Rows[i][3].ToString();

      //性别
      mingdan.Sex = data.Rows[i][4].ToString();
      list.Add(mingdan);
    }
  }
  catch (Exception e2)
  {
    return Json(result.ErrorResult("操作异常 : " + e2.Message));
  }

  //返回Json数据
  return Json(list);
}

前端代码是这样的

<div>

  <a href="javascript:void(0)" onclick="document.getElementById('txt_file').click()">导入名单</a>

  <form action="@Url.Action("Daoru")" enctype="multipart/form-data" method="post" id="up" target="upiframe">
    <input type="file" hidden name="file" id="txt_file" onchange="document.getElementById('up').submit()" />
    <input type="hidden" name="num" id="num" value="" />
  </form>

  <

</div>

<iframe style="display:none" name="upiframe" id="upiframe"></iframe>

<script type="text/javascript">
  window.onload = function () {
    document.getElementById("upiframe").onload = function (e) {
      try {
        var upiframe = document.getElementById("upiframe"),
        body = (upiframe.contentDocument || upiframe.contentWindow.document).body,
        result = body.innerText || body.textContent || '';

        //最终的Json数据data
        data = JSON.parse(result);
      } catch (er) {
        console.log(er.message)
      }
      document.getElementById("up").reset();
    };
  }

</script>

C# Aspose.Cells方式导入Excel文件的更多相关文章

  1. 使用Aspose.Cells组件生成Excel文件

    生成带表头的Excel文件,格式如下显示. 当然更复杂的一些也可以通过 合并单元格的方法 public void Merge(int firstRow, int firstColumn, int to ...

  2. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  3. phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。

    工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...

  4. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  5. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  6. YII使用PHPExcel导入Excel文件的方法

    1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...

  7. excel数据 入库mysql 和 mysql数据 导入excel文件

    1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...

  8. java后端导入excel模板和导入excel文件去读数据

    模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...

  9. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

随机推荐

  1. [源码]K8 Cscan模块 C#获取内网主机IP/机器名/Banner/网页标题源码

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  2. 在Windows环境中安装Neo4j

    图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边( ...

  3. 浅谈如何使用Netty开发高性能的RPC服务器

    如何使用Netty进行RPC服务器的开发,技术原理涉及如下:1.定义RPC请求消息.应答消息结构,里面要包括RPC的接口定义模块,如远程调用的类名.方法名.参数结构.参数值等信息. 2.服务端初始化的 ...

  4. 【Shell实战】批量在多台服务器上执行命令

    功能说明:批量在多台服务器上执行命令 #!/bin/bash # ========================================== # 功能:批量在多台服务器上执行命令 # 方法: ...

  5. JavaWeb学习(一)———JavaWeb入门

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...

  6. 记一次升级Tomcat

    总述     JDK都要出12了,而我们项目使用的jdk却仍然还停留在JDK1.6.为了追寻技术的发展的脚步,我这边准备将项目升级到JDK1.8.而作为一个web项目,我们的容器使用的是Tomcat. ...

  7. [转]group by 后使用 rollup 子句总结

    group by 后使用 rollup 子句总结 一.如何理解group by 后带 rollup 子句所产生的效果 group by 后带 rollup 子句的功能可以理解为:先按一定的规则产生多种 ...

  8. MyBatis学习笔记(一) 概述

    一.什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...

  9. 【github&&git】6、SmartGit(试用期30后),个人继续使用的方法。

    在我们做项目的过程中,我们会用到SmartGit这个软件来将本地的MAVEN项目push到国内的码云(https://git.oschina.net)或者是国外的github网站进行项目的管理,这个时 ...

  10. 【Spring】7、拦截器HandlerInterceptor

    处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   常见 ...