读取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. Gradle中使用SpringBoot插件构建多模块遇到的问题

    通常下,多模块的项目如下: Root project 'demospring' +--- Project ':model' \--- Project ':rest' 那么我们需要在rest模块依赖mo ...

  2. JVM 监控,调优,调试

    JVM监控工具 Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助.常用工具如下: jps 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启 ...

  3. Android生成二维码--拍照或从相册选取图片

    拍照或从相册选择图片是我们日常开发中经常使用到的,可以说是必须掌握的东西.上一篇我介绍了如何生成自定义二维码<Android生成自定义二维码>,其中logo和代替黑色色块的图片都是写死的, ...

  4. 比Python、Java更快的 Go 语言,能否称霸江湖?

    关注之后加星标,江湖要事早知道 ​ 文章来源:jb51.net 有一种语言堪称比语言排行榜前五热门选手的Python.Java更快,它就是GO语言. Go于2009年11月正式宣布推出,成为开放源代码 ...

  5. CentOS7修改默认启动级别

    如上个随笔所言,Linux分为7个启动级别: 0 - 系统停机状态 1 - 单用户工作状态 2 - 多用户状态(没有NFS) 3 - 多用户状态(有NFS) 4 - 系统未使用,留给用户 5 - 图形 ...

  6. 怎么样在windows命令下创建一个没有文件名的文件?

    直接上图 echo ' ' >> .aa //创建一个空字符的 .aa 的文件

  7. bootstrap3中container与container_fluid的区别

    .container与.container_fluid是bootstrap中的两种不同类型的外层容器,按照官方的说法,这两者的区别是: .container 类用于固定宽度并支持响应式布局的容器. . ...

  8. netty源码解解析(4.0)-12 Channel NIO实现:channel初始化

    创建一个channel实例,并把它register到eventLoopGroup中之后,这个channel然后处于inactive状态,仍然是不可用的.只有在bind或connect方法调用成功之后才 ...

  9. 我对alias的重新认识:通过alias让rm更安全

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rm的悲剧总是发生在不经意之间,所以无论是在shell脚本中还 ...

  10. python字典操作和内置方法

    一 字典基本介绍 python中只有字典是映射结构,通过key取值,并且key是不可变数据类型,而value可以是任意数据类型. 字典通过一个花括号,里面存放key:value的数据结构来定义.理论上 ...