MVC4.0 上传Excel并存入数据库
这里的这个功能实现在WebForm很好实现,上传阶段简单的一个FileUoLoad控件就搞定了,什么取值,什么上传都是浮云,微软都帮我们封装好了,我们只需要一拖一拽就OK了,但这些在MVC中是不行的!
MVC实现了显示和控制的分离就不可能再使用服务端控件了,所以我们就又回到了原始的表单提交,AJAX异步提交数据什么的,不多说直接上代码,简单的写一下
View:
<form id="form" name="form" enctype="multipart/form-data" method="post" action="/DataInfoAndCal/Cal">
<input type="file" name="fileName" />
<input name="info" type="submit" value="导 入" class="bt_bg" />
</form>
在控制器中接受选中的文件 可以这样子: HttpPostedFileBase fb = Request.Files[0];
string fileName = fb.FileName; //获取到文件名 xx.xls
fb.SaveAs(Server.MapPath("~/App_Data/Excel/Model.xls"));
判断什么的都是浮云就不写上去了
好了上传成功,注意 <input type="file" name="fileName" />这个标签使用 HttpPostedFileBase fb = Request.Files[0];在Chome浏览器下只能够获得文件名称而不能够获得完整路径 这个问题还没解决
好的下一步将Excel转换为DataSet数据集,这个在这里就好WebForm没什么区别了 直接上代码
DataSet dsCal = new DataSet();
dsCal = GetDataSet(fb.FileName);
//下面是方法
#region EXCEL数据转换DataSet
/// <summary>
/// EXCEL数据转换DataSet
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="search">表名</param>
/// <returns></returns>
protected DataSet GetDataSet(string filePath)
{
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/App_Data/Excel/Model.xls") + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
OleDbConnection objConn = null;
objConn = new OleDbConnection(strConn);
objConn.Open();
DataSet ds = new DataSet();
List<string> List = new List<string> { };
DataTable dtSheetName = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow dr in dtSheetName.Rows)
{
if (dr["Table_Name"].ToString().Contains("$") && !dr[2].ToString().EndsWith("$"))
{
continue;
}
string s = dr["Table_Name"].ToString();
List.Add(s);
}
try
{
for (int i = 0; i < List.Count; i++)
{
ds.Tables.Add(List[i]);
string SheetName = List[i];
string strSql = "select * from [" + SheetName + "]";
OleDbDataAdapter odbcCSVDataAdapter = new OleDbDataAdapter(strSql, objConn);
DataTable dt = ds.Tables[i];
odbcCSVDataAdapter.Fill(dt);
}
objConn.Close();
return ds;
}
catch (Exception ex)
{
return null;
}
}
#endregion
这里面注意取到的Excel的表名的集合可能会有不是$结束的,这是由Excel内部处理导致的 直接筛选下就OK了
顺利的完成Excel的导入上转换 存入数据库等做完再写
番外话:毕业一年来第一次在博客园里面写东西,感觉记录下成长的脚印是件很开心的事情
MVC4.0 上传Excel并存入数据库的更多相关文章
- 上传excel数据到数据库中
上传excel表格数据到数据库 导入固定路径下的excel数据到数据库 <form id="disposeFlightDataForm" action="../up ...
- jQuery+php+ajax+PHPExcel实现上传excel文件导入数据库
项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...
- PHPExcel实现上传excel文件导入数据库
项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...
- MVC4.0 上传文件
Views/Import/ImportExcel.cshtml @{ Layout = null;} <!DOCTYPE html> <html><head> &l ...
- Uploadify上传Excel到数据库
前两章简单的介绍了Uploadify上传插件的基本使用和相关的属性说明.这一章结合Uploadify+ssh框架+jquery实现Excel上传并保存到数据库. 以前写的这篇文章 Jq ...
- postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库
最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...
- Django上传excel表格并将数据写入数据库
前言: 最近公司领导要统计技术部门在各个业务条线花费的工时百分比,而 jira 当前的 Tempo 插件只能统计个人工时.于是就写了个报表工具,将 jira 中导出的个人工时excel表格 导入数据库 ...
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
随机推荐
- 【转】MVC5中的区域(Areas)
MVC本身提倡的就是关注点分离.但是当项目本身的业务逻辑足够复杂,如果所有的业务逻辑都写个Controller文件夹下面的时候,你会看到非常庞大的各种命名的Controller,这个时候区域的作用就非 ...
- 最近看到一篇cell点击时的动画,感觉还不错
http://blog.csdn.net/cloudox_/article/details/51262827
- jQuery插件开发 格式与解析3之$.extend()用途
前叙:$.extend()——用途:扩展和继承 1.Object extend() 用一个或多个对象扩展另一个对象,并返回已修改的原始对象.这对于简单继承是一个非常有用的实用工具. (1)扩展:(Do ...
- QML设计登陆界面
QML设计登陆界面 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2 说明: 用QML设计一个应用的登陆界面 ...
- 如何在虚拟机中安装Win7系统
在虚拟机里安装系统,可以很方便我们对系统的各项功能进行测试,而又不会影响本机系统,本节就介绍如何在虚拟机中安装Win7系统 . 工具/原料 vm9虚拟机 电脑一台 方法/步骤 1 在百度上搜索win7 ...
- Ubuntu 搭建NDK环境
一. NDK下载地址 https://developer.android.com/tools/sdk/ndk/index.html 二. NDK环境两种方式 NDK下载后,解压缩后放置于目录/home ...
- wpf 中自定义控件及其使用
主要有3个步骤: 1. 首先创建一个自定义的控件,该控件继承 TextBox namespace EzIntePark.Presentation.Common { /// <summary> ...
- js身份证验证代码
var idCardNoUtil = { provinceAndCitys: {11:"北京",12:"天津",13:"河北",14:&qu ...
- DELL RACADM 工具使用介绍
如果iDRAC的IP或者设置出现问题,不能够链接,那么可以通过RACADM这个程序在系统层面可以对iDRAC进行设置,使用的方法以及命令都在下边. RACADM provides command li ...
- Ajax&XMLHttpRequest
XMLHttpRequest 简单省力的方法 将文件编码成base64通过Ajax上传 HTML5学习之FileReader接口 HTML5学习之FileReader接口 通过Ajax方式上传文件,使 ...