cshtml:

 <form class="form-horizontal" id="form1" role="form" ng-submit="import ()" enctype="multipart/form-data">
  <button class="btn btn-primary" type="button" ng-click="downloadTemp()">下载模板</button>
  <button type="submit" class="btn btn-primary">导入</button>
</form>

js:

 //下载模板
$scope.downloadTemp = function () {
  downloadfile({
    url: "/Temp/DownloadTemp"
  });
} //导入
$scope.import = function () {
  var url = "/Temp/Import";
  var formData = new FormData();//使用FormData进行文件上传
  formData.append("file", file.files[0]);//拿到当前文件
  $http.post(url, formData, {
    transformRequest: angular.identity,
    headers: { 'Content-Type': undefined }
  }).success(function (data, status) {
    var success = "";
    if (data.success = false)
    {
      success = "导入失败!";
    }
    $scope.AlertMesage(success + data.Message, 1);
  }).error(function (data, status) {
    $scope.AlertMesage("导入异常:[" + data.Message + "]!", 3);
  });
};

Controller:

 /// <summary>
/// 模板下载
/// </summary>
/// <returns></returns>
[HttpPost]
public FileResult DownloadTemp()
{
  try
  {
    var fileName = $"数据_{DateTime.Now:yyyyMMdd}.xls";
    //创建Excel文件的对象
    HSSFWorkbook book = new HSSFWorkbook();
    //添加一个sheet
    ISheet sheet1 = book.CreateSheet("Sheet1");
    #region 给sheet1添加第一行的头部标题
    IRow row1 = sheet1.CreateRow();
    //给sheet1添加第一行的头部标题
    row1.CreateCell().SetCellValue("编号");
    row1.CreateCell().SetCellValue("名称");
    row1.CreateCell().SetCellValue("运能");
    #endregion
    //获取正常状态(自营,在用,有效)的站点运能数据
    var list = GetAllListInfo();
    if (list != null && list .Any())
    {
      for (int i = ; i < list.Count(); i++)
      {
        NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
        rowtemp.CreateCell().SetCellValue(capacityList[i].Code);
        rowtemp.CreateCell().SetCellValue(capacityList[i].Name);
        rowtemp.CreateCell().SetCellValue(capacityList[i].Capacity);       }
    }
    // 写入到客户端
    MemoryStream ms = new MemoryStream();
    book.Write(ms);
    ms.Seek(, SeekOrigin.Begin);
    return File(ms, "application/vnd.ms-excel", fileName);
  }
  catch (Exception ex)
  {
    throw new Exception("导出数据失败:" + ex.ToString());
  }
}
         /// <summary>
/// 导入
/// </summary>
/// <returns></returns>
[HttpPost]
public JsonResult Import()
{
try
{
//接收客户端传递过来的数据
HttpPostedFileBase file = Request.Files["file"];
if (file == null)
{
return Json(new
{
Success = false,
Message = "请选择上传的Excel文件",
});
}
//对文件的格式判断,此处省略
string fileExt = Path.GetExtension(file.FileName.Replace("\"", ""));
var supportArr = new string[] { ".xls", ".xlsx" };
if (supportArr.Contains(fileExt) == false)
{
//throw new ArgumentException(string.Format("不支持的文件类型:{0}", fileExt));
return Json(new
{
Success = false,
Message = string.Format("不支持的文件类型:{0}", fileExt),
});
} Stream inputStream = file.InputStream;
//HSSFWorkbook hssfworkbook = new HSSFWorkbook(inputStream);
IWorkbook workbook = null;
if (fileExt == ".xlsx")
{
workbook = new XSSFWorkbook(inputStream); // .xlsx
}
else
{
workbook = new HSSFWorkbook(inputStream); // .xls
}
NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt();
// IRow headerRow = sheet.GetRow(0);//第一行为标题行
// int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1
List<StationEntity> list = new List<StationEntity>();
if (rowCount > )
{
try
{
for (int i = (sheet.FirstRowNum + ); i <= rowCount; i++)
{
IRow row = sheet.GetRow(i);
StationEntity model = new StationEntity(); if (row != null)
{ model.Code = row.GetCell() != null ? GetCellValue(row.GetCell()) : string.Empty ;
model.Name = row.GetCell() != null ? GetCellValue(row.GetCell()) : string.Empty;
model.Capacity = row.GetCell() != null ? ConvertHelper.ToInt32(GetCellValue(row.GetCell())) : ;
list.Add(model);
}
}
}
catch (Exception)
{
return Json(new
{
Success = false,
Message = "请填写正确格式的数据",
});
}
} //导入运能数据
if (list != null && list.Any())
{
string msg = string.Empty;
var success = StationBLL.RefreshData(list,out msg);
return Json(new
{
Success = success,
Message = msg,
});
}
else
return Json(new
{
Success = false,
Message = "没有要导入的数据",
});
}
catch (Exception ex)
{ throw new Exception("导入数据失败:" + ex.ToString());
}
}
         /// 根据Excel列类型获取列的值
/// </summary>
/// <param name="cell">Excel列</param>
/// <returns></returns>
private static string GetCellValue(ICell cell)
{
if (cell == null)
return string.Empty;
switch (cell.CellType)
{
case CellType.Blank:
return string.Empty;
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
case CellType.Error:
return cell.ErrorCellValue.ToString();
case CellType.Numeric:
case CellType.Unknown:
default:
return cell.ToString();
case CellType.String:
return cell.StringCellValue;
case CellType.Formula:
try
{
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
e.EvaluateInCell(cell);
return cell.ToString();
}
catch
{
return cell.NumericCellValue.ToString();
}
}
}

.NET MVC+angular导入导出的更多相关文章

  1. MVC execl 导入导出

    MVC execl 导入导出 <input id="xls" name="xls" type="file" style="w ...

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

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

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出

    本文示例代码下载: 链接:http://pan.baidu.com/s/1jHBdgCA 密码:hzh7 ps:Vs数据库脚本在解压目录下,修改web.config数据库链接,示例代码包含:导入,导出 ...

  4. 用MVC导入导出

    导入导出对于刚做的人一脸懵逼,但是明白思路之后就感觉非常容易,我也是研究了好久,才总算做了出来,放在这里给大家分享一下 一.先看下导出 视图脚本 <script type ="text ...

  5. .NET导入导出Excel

    若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...

  6. NPOI导入导出Excel

    .net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交  代码:  第一步. 在页面里面加入2个隐藏的iframe, 如下 ...

  7. ssm框架之将数据库的数据导入导出为excel文件

    在这里首先我要将自己遇到的各种问题,以及需求记录下来,做一个备忘,便于以后查看: 需求:主要实现两个功能,将oracle数据库里的数据导出为excel,同时需要将excel表格的数据导入到数据库 环境 ...

  8. java 中Excel的导入导出

    部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字  的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...

  9. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

随机推荐

  1. 使用ODP.NET连接Oracle数据库

    项目需要和第三方进行对接,奇葩的是地方没给提供接口,却提供了一个Oracle的视图 所以有了C#访问Oracle数据库的需求 1.打开nuget,安装驱动 https://www.nuget.org/ ...

  2. 浏览器输入URL后,HTTP请求返回的完整过程

    1.Redirect,跳转    浏览器记录里这个地址永久跳转的新地址,浏览器先去判断需不需要跳转 2.Application cache ,应用缓存    浏览器看请求的资源是否有缓存 3.DNS解 ...

  3. spring data jpa开启批量插入、批量更新

    spring data jpa开启批量插入.批量更新 原文链接:https://www.cnblogs.com/blog5277/p/10661096.html 原文作者:博客园--曲高终和寡 *** ...

  4. Django 管理站点

    这一部分是关于 Django 的自动管理界面.这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作.在这里我们将讨论如何激活,使用和定制这 ...

  5. Lab 11-2

    Analyze the malware found in Lab11-02.dll. Assume that a suspicious file named Lab11-02.ini was also ...

  6. GlusterFS分布式文件系统的使用

    glusterfs是一款开源的分布式文件系统. 它具备高扩展.高可用及高性能等特性,由于其无元数据服务器的设计,使其真正实现了线性的扩展能力,使存储总容量可轻松达到PB级别,支持数千客户端并发访问. ...

  7. 弹筐里同一个按钮判断是从哪里点击过来的form

    点击弹框按钮 <form action="javascript:;" method="post">         <button type= ...

  8. 华为交换机VRP系统命令试图

  9. padding和margin——内边距和外边距

    一.padding——内边距(内填充) 1.1.padding 简写属性在一个声明中设置所有填充属性.该属性可以有1到4个值. <style> div.outer{ width: 400p ...

  10. .net mvc 上传头像

    我用的是mvc5  开发环境vs2017 [仅供参考] [视图代码] <div > <img src="@path" alt="@att.Count&q ...