读取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. Ubuntu 16.04安装sogou 拼音输入法

    一.更换为国内的软件源 安装搜狗输入法之前请先更换为国内的软件源,否则无法解决依赖问题.首先,用以下命令打开源列表: sudo gedit /etc/apt/sources.list #用文本编辑器打 ...

  2. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 0.Learning Goals

    Learning Goals Understand the convolution operation Understand the pooling operation Remember the vo ...

  3. JsExcelXml.js的源码

    var JSXmlExcel = { ConvertXmlDoc: function (text) { var xmlDoc = null; try { xmlDoc = new ActiveXObj ...

  4. EasyNetQ中使用自定义的ISerializer

    最近在使用EasyNetQ时,遇到一个问题:c++项目组发送的消息数据不是Json数据,而是自定义的数据格式(各字段+‘|’连接成一个字符串),EasyNetQ中消费消息接收的都是强类型,没办法直接消 ...

  5. vue.js的项目实战

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由蔡述雄发表于云+社区专栏 需求背景 组件库是做UI和前端日常需求中经常用到的,把一个按钮,导航,列表之类的元素封装起来,方便日常使用, ...

  6. BizTalk 2010/2013 EDI B2B项目实践(1)

    BizTalk 2010/2013 EDI B2B项目实践(1) BizTalk开发标准EDI B2B是件非常容易的事情,但对于初学者可能有很多专业术语不太理解,不知道如何下手,我之前开始学的时候虽然 ...

  7. Docker系列之Docker容器(读书笔记)

    一.介绍 容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统和排在上面的应用. 二.容器 2.1 启动容器 启动容器有两种方式,一种是基于镜像新建一 ...

  8. Jmeter JDBC Request 查询语句中有汉字查询结果为空的解决方法

    搜索接口我会校验返回值,查询JDBC Request 查询语句有中文字的时候查询会有问题. 解决方法很简单,在JDBC Connection Configuration的Database URL里加一 ...

  9. Linux的进程线程及调度

    本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PCB(Pro ...

  10. [Noip2015PJ] 求和

    Description 一条狭长的纸带被均匀划分出了 \(n\) 个格子,格子编号从 \(1\) 到 \(n\) .每个格子上都染了一种颜色 \(color_i\) 用 \([1,m]\) 当中的一个 ...