C# Aspose.Cells方式导入Excel文件
读取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文件的更多相关文章
- 使用Aspose.Cells组件生成Excel文件
生成带表头的Excel文件,格式如下显示. 当然更复杂的一些也可以通过 合并单元格的方法 public void Merge(int firstRow, int firstColumn, int to ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。
工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- Java POI导入Excel文件
今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...
- YII使用PHPExcel导入Excel文件的方法
1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...
- excel数据 入库mysql 和 mysql数据 导入excel文件
1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
随机推荐
- fidder显示 请求响应时间
在顶部的工具栏找到 Rules->CustomRules,第一次打开会弹出提示要安装Fiddler Script 工具,选择 [否], 就会打开 CustomRules.js 文件. 在 cla ...
- “玲珑杯”ACM比赛 Round #18---图论你先敲完模板(DP+思维)
题目链接 DESCRIPTION INPUT OUTPUT SAMPLE INPUT 2 3 2 3 5 7 3 10 3 5 7 SAMPLE OUTPUT 12 26 HINT 官方题解: 代码如 ...
- solr入门
Solr采用Lucene搜索库为核心,提供全文索引和搜索开源企业平台,提供REST的HTTP/XML和JSON的API,如果你是Solr新手,那么就和我一起来入门吧!本教程以solr4.8作为测试环境 ...
- Hibernate学习(四)———— 双向多对多映射关系
一.小疑问的解答 问题一:到这里,有很多学习者会感到困惑,因为他不知道使用hibernate是不是需要自己去创建表,还是hibernate全自动,如果需要自己创建表,那么主外键这种设置也是自己设置吗? ...
- 手撕coreML之yolov2 object detection物体检测(含源代码)
一些闲话: 前面我有篇博客 https://www.cnblogs.com/riddick/p/10434339.html ,大致说了下如何将pytorch训练的.pth模型转换为mlmodel,部署 ...
- C++ 日期 & 时间
C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数. 为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 头文件. 有四个与时间相关的类型:clo ...
- scala中的isInstanceOf和asInstanceOf
如果实例化了子类的对象,但是将其赋予了父类类型的变量, 在后续的过程中,又需要将父类类型的变量转换为子类类型的变量,应该如何做? Ø 首先,需要使用isInstanceOf 判断对象是否为指定类的对 ...
- Intellij Idea乱码解决方案
使用Intellij Idea经常遇到的三种乱码问题: 1.工程代码乱码 2.main方法运行,控制台乱码 3.tomcat运行,控制台乱码 解决方案: 1.工程代码乱码 Settings > ...
- 【Java并发编程】21、线程池ThreadPoolExecutor源码解析
一.前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了 ...
- What are the differences between struct and class in C++?
Question: This question was already asked in the context of C#/.Net. Now I'd like to learn the diffe ...