.NET MVC+angular导入导出
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导入导出的更多相关文章
- MVC execl 导入导出
MVC execl 导入导出 <input id="xls" name="xls" type="file" style="w ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出
本文示例代码下载: 链接:http://pan.baidu.com/s/1jHBdgCA 密码:hzh7 ps:Vs数据库脚本在解压目录下,修改web.config数据库链接,示例代码包含:导入,导出 ...
- 用MVC导入导出
导入导出对于刚做的人一脸懵逼,但是明白思路之后就感觉非常容易,我也是研究了好久,才总算做了出来,放在这里给大家分享一下 一.先看下导出 视图脚本 <script type ="text ...
- .NET导入导出Excel
若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...
- NPOI导入导出Excel
.net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交 代码: 第一步. 在页面里面加入2个隐藏的iframe, 如下 ...
- ssm框架之将数据库的数据导入导出为excel文件
在这里首先我要将自己遇到的各种问题,以及需求记录下来,做一个备忘,便于以后查看: 需求:主要实现两个功能,将oracle数据库里的数据导出为excel,同时需要将excel表格的数据导入到数据库 环境 ...
- java 中Excel的导入导出
部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字 的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...
- ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...
随机推荐
- CentOS设置服务开机启动的两种方法
一.通过服务的方式设置自启动 1. 在/etc/init.d 下建立相关程序的启动脚本 2. chkconfig --add mysqld(添加服务到chkconfig列表中) chkconfig ...
- windows 根据端口查看进行PID 并杀掉进程
1. 首先用netstat -ano | find “端口号”查出进程号 明明有端口号是17568和18892, 如何确定是17568呢 2. takslist 查询当前的进行 3. 如何杀死进程呢 ...
- 'telnet' 不是内部或外部命令,也不是可运行的程序
1.打开控制面板 2. 3. 4.这样就好可,重新打开cmd命令.
- 在linux 上安装ansible
ansible 在线安装:yum install -y epel-releaseyum install -y ansible离线安装:rpm wget https://releases.ansible ...
- js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...
- php正则匹配
在PHP中,有两套正则表达式函数库,两者功能相似,只是执行效率上有所不同, 一套是有"preg_"为前缀命名的函数,一套有"ereg_"命名的函数的函数, 一个 ...
- Click event doesn't work on dynamically generated elements
I couldn't get live or delegate to work on a div in a lightbox (tinybox). I used setTimeout successf ...
- VUE基本常识
1.运行vue项目 项目根目录git Bash here npm run dev 为了能直接打开项目 配置项目package.json 添加--open 如下图: 2.坑:VUE初写小项目问 ...
- Educational Codeforces Round 5F. Expensive Strings
题意:给n个串ti,ps,i是s在ti中出现的次数,要求找到s,使得\(\sum_{i=1}^nc_i*p_{s,i}*|s|\)最大 题解:sam裸题,每次插入时相当于在fail链上到1的位置加ci ...
- IDEA(添加类注释以及方法注释)
添加类注释: File---Setting----Editor----Code Style-----File and Code Templates--------Class #if (${PA ...