Excel 数据导入(OleDb)
@using (Html.BeginForm("Student", "Excel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div style="margin-top: 20px;">
<fieldset id="myfieldset1">
<legend>学生信息导入</legend>
<p>
选择文件:<input id="FileUpload1" type="file" name="files" style="width: 250px; height: 24px;
background: White" class="easyui-validatebox" /></p>
<p>
<input id="btnImport1" type="submit" value="导入" style="width: 60px; height: 28px;" /></p>
<p style="color: Red; text-align: center;">@ViewBag.errorstu</p>
</fieldset>
</div>
}
public class ExcelController : Controller
{
ContractInfoBLL contract;
TeacherInfoBLL TIBLL;
ParentBLL PBLL;
public ExcelController()
{
if (contract == null)
{
contract = new ContractInfoBLL();
}
if (TIBLL == null)
{
TIBLL = new TeacherInfoBLL();
}
if (PBLL == null)
{
PBLL = new ParentBLL();
}
}
public ActionResult Index(bool Code = true, string Message="")
{
if (!Code)
{
ViewBag.Message = Message;
}
return View();
}
string StuExcel = ApiHelper.GetWebConfig("StuExcel", @"E:/需求/20160520 家宝贝/新建文件夹/学生用户.xlsx");
/// <summary>
/// Excel学生用户导入
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult Student(HttpPostedFileBase filebase)
{
#region
HttpPostedFileBase file = Request.Files["files"];
string FileName;
string savePath;
if (file == null || file.ContentLength <= )
{
ViewBag.error = "文件不能为空";
return View();
}
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 = * ;//定义上传文件的最大空间大小为4M
string FileType = ".xls,.xlsx";//定义上传文件的类型字符串 FileName = NoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
if (!FileType.Contains(fileEx))
{
ViewBag.error = "文件类型不对,只能导入xls和xlsx格式的文件";
return View();
}
if (filesize >= Maxsize)
{
ViewBag.error = "上传文件超过4M,不能上传";
return View();
}
string path = AppDomain.CurrentDomain.BaseDirectory + "App_Data/";
savePath = Path.Combine(path, FileName);
file.SaveAs(savePath);
}
#endregion
List<Student_Excel> stuList = new ExcelBLL().GetStudentByExcel(savePath);
string Meg = "";
int ItemSchool = ;
int classID = ;
int i = ;
foreach (var item in stuList)
{ bool ishavecode = contract.IsHaveContractCode(item.ContractCode);
if (!ishavecode)
{
i++;
Meg = "学籍号重复";
LoggerFactory.Instance.Logger_Info("学生用户_序号" + item.Number + "_学籍号:" + item.ContractCode + "_学生姓名:" + item.Name + "_原因:" + Meg);
}
else
{
ItemSchool = contract.GetGardenByName(item.ItemSchoolName);
classID = contract.GetClassInfoID(ItemSchool, item.ClassName);
if (classID != )
{
DateTime da = DateTime.Now;
ContractInfoList model = new ContractInfoList();
model.ContractCode = item.ContractCode;
model.ContractStatus = (int)ContractStatus.Normal;
model.AdmissionsTeacherID = contract.GetTeacherIDbyName(item.TeacherName);
model.StudentName = item.Name;
model.StudentGender = item.Sex == "男" ? : ;
model.ParentName = item.ParentName;
model.ParenRelation = item.ParenRelation;
model.ParentTel = item.Phone;
model.EntranceTime = item.EntranceTime.HasValue ? item.EntranceTime.Value : DateTime.Now;
model.PaymentAmount = item.PaymentAmount != "" ? Convert.ToInt32(item.PaymentAmount) : ;
model.ItemSchool = ItemSchool;
model.AddTime = da;
model.UpdateTime = da;
model.Remarks = "";
model.ClassInfoID = classID; bool boo = contract.IsCreateContract(model);
if (!boo)
{
i++;
Meg = "创建失败";
LoggerFactory.Instance.Logger_Info("学生用户_序号" + item.Number + "_学籍号:" + item.ContractCode + "_学生姓名:" + item.Name + "_原因:" + Meg);
}
}
else
{
i++;
Meg = "班级不存在";
LoggerFactory.Instance.Logger_Info("学生用户_序号" + item.Number + "_学籍号:" + item.ContractCode + "_学生姓名:" + item.Name + "_原因:" + Meg);
}
}
} return Json(new { Code = Meg == "" ? true : false, Message = Meg != "" ? "未导入数据:" + i + "条" : "" });
//ViewBag.errorstu = "导入成功";
//return RedirectToAction("Index");
} }
public class ExcelBLL
{
public List<Student_Excel> GetStudentByExcel(string path)
{
List<Student_Excel> stuList = new List<Student_Excel>();
DataSet ds = Helper.GetDataSet("select * from [Sheet1$]", path);
DataTable dt = ds.Tables[];//忽略第一行表名,从第二行开始
foreach (DataRow row in dt.Rows)
{
if (row["序号"].ToString()!="")
{
DateTime ad = new DateTime();
if (row["入学日期"].ToString() != "")
{
ad = Convert.ToDateTime(row["入学日期"]);
}
stuList.Add(new Student_Excel()
{
Number = row["序号"].ToString(),
ContractCode = row["学籍号"].ToString(),
Name = row["学生姓名"].ToString(),
Sex = row["性别"].ToString(),
ClassName = row["所在班级"].ToString(),
Phone = row["紧急联系电话"].ToString(),
ParenRelation = row["与孩子关系"].ToString(),
ParentName = row["家长姓名"].ToString(),
EntranceTime = ad,//Convert.ToDateTime(row["入学日期"]),
TeacherName = row["招生老师"].ToString(),
PaymentAmount = row["收费金额"].ToString(),
ItemSchoolName = row["所在园区"].ToString(),
});
}
} return stuList;
}
}
public class Helper:BaseBLL
{
#region Excel 导入
private static string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=yes; IMEX=2'"; public static DataSet GetDataSet(string sql, string path)
{
OleDbConnection conn = new OleDbConnection(string.Format(connstring, path));
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();//创建内存数据集
try
{
conn.Open();
da.Fill(ds);
return ds;
}
catch (Exception e)
{
//写日志 throw e;
}
finally
{
conn.Close();
}
}
#endregion
}
Excel 数据导入(OleDb)的更多相关文章
- C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符
问题描述:在使用oledb方式将excel数据导入到datagridview中,在datagridview单元格中的数据没有显示全,似乎只截取了数据源中的一段 解决方案:1.关于该问题,微软官方答案: ...
- c#将Excel数据导入到数据库的实现代码(OleDb)
sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- excel 数据导入数据表
环境: Windows server 2012 rm sql server 2012 excel 数据导入数据表 INSERT INTO [dbo].[AdminUser] SELECT [Adm ...
- excel数据导入到sqlserver中---------工作笔记
调用页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sys ...
- c#将Excel数据导入到数据库的实现代码(转载)
假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码如下: using System; using System.Collections.Generic ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- C# Excel数据导入到数据库
http://www.jb51.net/article/44743.htm 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 复制代码 代码如下: using System ...
- 批量Excel数据导入Oracle数据库
由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...
- c#将Excel数据导入到数据库的实现代码
这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...
随机推荐
- CSS.03 -- 浏览器行高、字体;盒子模型--边框、内边距、外边距
如果此时你也在自学中,请使用 FireWorks CS6 进行切图测距等,百度一下吧~ Fireworks的基本使用 新建文件 ctrl+n 打开文件 ctrl+o 调出和隐藏标尺 ctrl+r ...
- webpack引入handlebars报错'You must pass a string or Handlebars AST to Handlebars.compile'
背景: webpack作为一个部分替代打包工具和模块化工具的优秀选择出现,作为尝试,也为了构建自己习惯的前端开发方式,我尝试了将webpack和自己常用handlebars模板引擎结合.整体项目背景为 ...
- 读书笔记 effective c++ Item 41 理解隐式接口和编译期多态
1. 显示接口和运行时多态 面向对象编程的世界围绕着显式接口和运行时多态.举个例子,考虑下面的类(无意义的类), class Widget { public: Widget(); virtual ~W ...
- 【C语言】模拟实现atoi函数
atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( ...
- STM32驱动OV7725摄像头颜色识别
实验目的: 使用stm32驱动OV7725摄像头进行图像实时采集,在tft屏幕上实时显示并识别图像中的特定颜色,在颜色的周围画上框. 实验现象: 我的工程代码链接: http://download.c ...
- 将一个对象push到数组之中的几点问题
在项目开发中我们需要向意数组中添加对象:首先想到的是利用数组的api,----push demo: var ar = [1,2,3] var ar2 = [11,22,33] var obj = { ...
- SSH整合(一)hibernate+spring
1.导入maven节点 <dependencies> //测试用的 <dependency> <groupId>junit</groupId> < ...
- 玩转SSH(四):Struts + Spring + MyBatis
一.创建 SSMDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-webapp 模版创建. 输入对应的项目坐标 ...
- Android IPC机制全解析<一>
概要 多进程概念及多进程常见注意事项 IPC基础:Android序列化和Binder 跨进程常见的几种通信方式:Bundle通过Intent传递数据,文件共享,ContentProvider,基于Bi ...
- ajax大洋第一步
Ajax工具包 Ajax并不是一项新技术,它实际上是几种技术,每种技术各尽其职,以一种全新的方式聚合在一起. 服务器端语言:服务器需要具备向浏览器发送特定信息的能力.Ajax与服务器端语言无关. XM ...