webApi 导入Excel
/// <summary>
/// 导入
/// </summary>
/// <param name="organizationId"></param>
/// <returns></returns>
[HttpPost, Route("ImportExcel")]
public V_ResultModel ImportExcel(int organizationId)
{
var result = new V_ResultModel();
try
{
HttpPostedFile file = HttpContext.Current.Request.Files[0];
string FileName;
string savePath;
if (file == null || file.ContentLength <= 0)
{
result.success = false;
result.data = "文件为空!";
return result;
}
else
{
string filename = Path.GetFileName(file.FileName);
int filesize = file.ContentLength;//获取上传文件的大小单位为字节byte
string fileEx = System.IO.Path.GetExtension(filename);//获取上传文件的扩展名
string NoFileName = System.IO.Path.GetFileNameWithoutExtension(filename);//获取无扩展名的文件名
int Maxsize = 4000 * 1024;//定义上传文件的最大空间大小为4M
string FileType = ".xls,.xlsx";//定义上传文件的类型字符串
FileName = DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
if (!FileType.Contains(fileEx))
{
result.success = false;
result.data = "文件类型不对,只能导入xls和xlsx格式的文件!";
return result;
}
if (filesize >= Maxsize)
{
result.success = false;
result.data = "上传文件超过4M,不能上传!";
return result;
}
string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/excel/";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
savePath = Path.Combine(path, FileName);
file.SaveAs(savePath);
string strConn;
if (fileEx == ".xls")
{
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
}
else
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + savePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
}
OleDbConnection conn = new OleDbConnection(strConn);
try
{
conn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "ExcelInfo");
conn.Close();
DataTable table = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();
var sqlList = new List<string>();
for (int i = 0; i < table.Rows.Count; i++)
{
try
{
var equipment = new Equipment()
{
Num = table.Rows[i][0].ToString(),
Name = "智能床传感器",
Type = 0,
BindStatus = 0,
OrganizationId = organizationId
};
sqlList.Add(string.Format("insert into Equipment (Num, Name,Type,BindStatus,OrganizationId) values ('{0}','{1}',{2},{3},{4})", equipment.Num, equipment.Name, equipment.Type, equipment.BindStatus, equipment.OrganizationId));
if (sqlList.Count == 10)
{
var sqlCommand = string.Join(";", sqlList);
_equipmentService.BatchSave(sqlCommand);
sqlList.Clear();
}
}
catch
{
}
}
if (sqlList.Any())
{
_equipmentService.BatchSave(string.Join(";", sqlList));
}
result.success = true;
result.data = "导入成功!";
return result;
}
catch
{
conn.Close();
result.success = false;
result.data = "导入失败!";
return result;
}
}
}
catch (Exception ex)
{
LoggingFactory.GetLogger().Log(ex.ToString());
result.success = false;
result.data = "导入失败!";
return result;
}
}
webApi 导入Excel的更多相关文章
- webapi 导入excel处理数据
参考资料 https://blog.csdn.net/pan_junbiao/article/details/82935992 https://www.cnblogs.com/dansedia ...
- 一步步实现ABAP后台导入EXCEL到数据库【3】
在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- IE8下导入EXCEL数据传到客户端以附件下载
IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...
- java的poi技术读取和导入Excel
项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html 用到的Excel文件: http://www.cnblogs.com/h ...
- 报表工具如何实现多次导入Excel
很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...
- .NET导入Excel到SQL数据库
在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?企业或者单位在从无信息化到信息化的一个转变过程.在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算 ...
- SQL Server服务器上需要导入Excel数据的必要条件
SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...
随机推荐
- WIN7 WIN8 WIN10你们的WmiPrvSE.exe系统占用资源厉害吗?
大家一起来做个实验吧.把你的支付宝安全控件和支付宝数字证书两个东东都卸掉.试试看电脑是否年轻几岁? 出处:百度贴吧原帖
- 策略模式(Strategy Pattern)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 环境类(Context):用一个ConcreteStrategy对象来配置. ...
- Winform水印
本文实例展示了WinForm实现为TextBox设置水印文字功能,非常实用的技巧,分享给大家供大家参考. 关键代码如下 using System; using System.Runtime.Inter ...
- sqldeveloper
阅读文档:e12152-08 preferences 首选项,参数 panes 窗格 tabs 标签,选项卡 pin 别针,钉住 detach,move,dock 分离,移动,停靠 find data ...
- SpringCloud Sleuth 使用
1. 介绍 Spring-Cloud-Sleuth是Spring Cloud的组成部分之一,为SpringCloud应用实现了一种分布式追踪解决方案,其兼容了Zipkin, HTrace和log- ...
- python之错误和异常
错误 分为语法错误和逻辑错误,如下: 语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器编译. 逻辑错误可能是由于不完整或是不合法的输入所致,或者是无法生成.计算.或是输出结果需要的过程无法 ...
- Android应用开发-Activity(重制版)
Android四大组件:Activity,Service,Broadcast Receiver,Content Provider Activity是Context的子类,同时实现了Window.Cal ...
- Zookeeper启动过程
在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时 ...
- CentOS MySQL 配置
问题: MySQL安装后root用户无法连接,提示 ERROR 1045 (28000): Access denied for user ’root’@’localhost’ (using passw ...
- .net解决程序集版本冲突的方法
以log4net为例,分为两种情况 1.不同version,相同publicKeyToken 在bin里放较新版本的dll 并在web|app.config的<configuration> ...