/// <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的更多相关文章

  1. webapi 导入excel处理数据

    参考资料     https://blog.csdn.net/pan_junbiao/article/details/82935992 https://www.cnblogs.com/dansedia ...

  2. 一步步实现ABAP后台导入EXCEL到数据库【3】

    在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...

  3. 一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  4. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  5. IE8下导入EXCEL数据传到客户端以附件下载

    IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...

  6. java的poi技术读取和导入Excel

    项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html  用到的Excel文件: http://www.cnblogs.com/h ...

  7. 报表工具如何实现多次导入Excel

    很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中.但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数 ...

  8. .NET导入Excel到SQL数据库

    在我们开发各类应用型系统,经常会遇到导入导出Excel,为什么会用到他呢?企业或者单位在从无信息化到信息化的一个转变过程.在没有信息化的企业或单位之前,一般都采用Excel来记录相应的数据,做统计计算 ...

  9. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

随机推荐

  1. 关于python怎样编写登录接口

    把今天的成果展示下,关于怎么用python编写登录接口, 要求是   1.输入用户名和密码 2.输错三次密码就锁定用户 3.认证成功后输出欢迎信息 账号文件内容如下: sanjiang sanjian ...

  2. Java命名规范基础

    一.java命名规范 1.类和接口:由多个单词组成时,所有单词的首字母大写,如TestJava 2.变量名和方法(函数):由多个单词组成时,所有第一个单词的首字母小写,之后每一个单词的首字母大写,如: ...

  3. 使用npm安装一些包失败了的看过来(npm国内镜像介绍)

    这个也是网上搜的,亲自试过,非常好用! 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set reg ...

  4. 一个人独立开发 3D 游戏引擎可能吗?

    作者:孙志超链接:https://www.zhihu.com/question/24733255/answer/42000966来源:知乎著作权归作者所有,转载请联系作者获得授权. 当然可以,但难道有 ...

  5. Spring Integration

    @ContextConfiguration directs Spring's test runner to locate a configuration file with the same name ...

  6. .NET加密方法

    SHA1加密: string[] ArrTmp = { Token, timestamp, nonce }; Array.Sort(ArrTmp);//字典排序 string tmpStr = str ...

  7. Linux使用ssh公钥实现免密码登录Linux

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168.1.181).现想A ...

  8. 采用CAS原理构建单点登录

    企业的信息化过程是一个循序渐进的过程,在企业各个业务网站逐步建设的过程中,根据各种业务信息水平的需要构建了相应的应用系统,由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重.设计方法 ...

  9. eclispe中在线安装maven插件

    启动Eclipse之后,在菜单栏中选择Help,然后选择Install New Software-,接着你会看到一个Install对话框, 点击Work with:字段边上的Add按钮,你会得到一个新 ...

  10. Tab切换

    代码 <!DOCTYPE html> <html lang="en"><head> <meta charset="UTF-8&q ...