c#.net Excel中的数据导入到SQL数据库中
/// <summary>
/// 从Excel 导入学生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnInport_Click(object sender, EventArgs e)
{
try
{
//取得用户选择的Excel文件的方法
string strFileName = GetUserSelectFile();//获得excel路径
//string strFileName = @"E:\学士后\录像\二单元\2开发分层架构\Excel报表下载资料\授课源代码\授课源代码\PB_StudentInport\学生基本信息.xls";//获得excel路径
//如果文件不为空
if (strFileName.Equals(string.Empty))
{
return;
}
else
{
//从Excel中导入学生信息
ExcelHandle excelHandle = new ExcelHandle();
//GetStudentsFromExcel用这个方法把数据导入到 List<Student>集合中,两个参数一个是的到文件名,二个工作表的名字Sheet1,这个方法返回 List集合对象且保存数据到这个集合中
List<Student> students = excelHandle.GetStudentsFromExcel(strFileName, "Sheet1");
//判断如果这个集合有数据
if (students.Count > 0)
{
//导入学生信息
string messages = "";
//AddStudent添加的方法
int count = new StudentManager().AddStudent(students, ref messages);
if (count == students.Count)//全部导入成功
{
MessageBox.Show(INPORTSUCCESS, OPERATIONWARN, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
MessageBox.Show(messages, OPERATIOFAILED, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
//如果导入数据大于1条,重新绑定列表
if (count > 0)
{
this.BindStudents();
}
}
else
{
MessageBox.Show(EMPTYDATA, OPERATIOFAILED, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, OPERATIOFAILED, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
/// <summary>
/// 取得用户选择的Excel文件
/// </summary>
/// <returns>用户选择的文件名</returns>
public string GetUserSelectFile()
{
//实例化 OpenFileDialog对象,用于打开文件对话框
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.InitialDirectory = "c:\\";
fileDialog.Filter = "Microsoft Excel files (*.xls)|*.xls";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
if ((fileDialog.OpenFile()) != null)
{
return fileDialog.FileName;
}
}
return string.Empty;
}
/// <summary>
/// 从Excel 获取学生数据
/// </summary>
/// <param name="filePath">带完整路径的Excel文件名</param>
/// <param name="sheetName">工作表名字</param>
/// <returns>学生实体集合</returns>
public List<Student> GetStudentsFromExcel(string filePath, string sheetName)
{
List<Student> students = new List<Student>();
Microsoft.Office.Interop.Excel.Application excel =
new Microsoft.Office.Interop.Excel.Application();
Worksheet sheet = null;
Range rNo = null;
try
{
excel.Workbooks.Open(filePath);//打开Excel 文件
foreach (Worksheet wsheet in excel.ActiveWorkbook.Sheets)
{
if (wsheet.Name == sheetName)
{
sheet = wsheet;
break;
}
}
//读取单元格数据
if (sheet != null)
{
int row = 2;//当前行号
while (true)
{
//如果碰到学号为空的行,则停止读取数据
rNo = sheet.Cells[row, 1] as Range;
if (rNo.Text.ToString().Trim().Length == 0)
{
break;
}
Student stu = new Student();
//学号
Range rContent = sheet.Cells[row, 1] as Range;
stu.StudentNo = Convert.ToInt32(rContent.Text.ToString().Trim());
//密码
rContent = sheet.Cells[row, 2] as Range;
stu.LoginPwd = rContent.Text.ToString().Trim();
//姓名
rContent = sheet.Cells[row, 3] as Range;
stu.StudentName = rContent.Text.ToString().Trim();
//性别
rContent = sheet.Cells[row, 4] as Range;
stu.Gender = rContent.Text.ToString().Trim() == "男" ? true : false;
//年级
rContent = sheet.Cells[row, 5] as Range;
stu.GradeId = new GradeManager().GetGradeId(rContent.Text.ToString().Trim());
//电话
rContent = sheet.Cells[row, 6] as Range;
stu.Phone = rContent.Text.ToString().Trim();
//地址
rContent = sheet.Cells[row, 7] as Range;
stu.Address = rContent.Text.ToString().Trim();
//出生年月日
rContent = sheet.Cells[row, 8] as Range;
stu.BornDate = Convert.ToDateTime(rContent.Text.ToString().Trim());
//邮箱
rContent = sheet.Cells[row, 9] as Range;
stu.Email = rContent.Text.ToString().Trim();
//身份证号
rContent = sheet.Cells[row, 10] as Range;
stu.IdentityCard = rContent.Text.ToString().Trim();
students.Add(stu);
row += 1;
}
}
excel.Visible = true;
//关闭WorkBook
excel.ActiveWorkbook.Close();
//关闭Excel
excel.Quit();
}
finally
{
//主动释放COM对象
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(excel);
Marshal.ReleaseComObject(rNo);
//对象引用设置null
sheet = null;
excel = null;
rNo = null;
//通过垃圾收集器回收对象
GC.Collect();
}
return students;
}
/// <summary>
/// 导入学生信息
/// </summary>
/// <param name="students">学生实体集合</param>
/// <param name="messages">消息字符串,必须为空字符串</param>
/// <returns></returns>
public int AddStudent(List<Student> students, ref string messages)
{
int i = 0;
foreach (Student stu in students)
{
string mess = "";
if (this.AddStudent(stu, ref mess) == false)
{
messages += string.Format("学号为{0}的数据错误,{1};", stu.StudentNo, mess);
}
else//添加数据成功
{
i++;
}
}
return i;
}
/*************************************
* 类名:Student
* 功能描述:提供学生实体类
* ************************************/
namespace MySchool.Models
{
[Serializable]
public class Student
{
public int StudentNo{set;get;}
public string LoginPwd{set;get;}
public string StudentName{set;get;}
public bool Gender { set; get; }
public int GradeId { set; get; }
public string Phone { set; get; }
public string Address { set; get; }
public DateTime BornDate { set; get; }
public string Email { set; get; }
public string IdentityCard { set; get; }
}
}
c#.net Excel中的数据导入到SQL数据库中的更多相关文章
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
- 用ttBulkCp把excel中的数据导入到timesten数据库中
最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...
- 把excel中的数据导入到Oracle数据库中
从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...
- 图解如何 将Excel里的数据导入到sql server数据库中
项目中,经常会碰到如何将Excel里的数据导入到sql server中的问题. 下面,图解如何实现导入Excel中的数据到sql server 2008 R2: Excel截图如下: 查询pub数据库 ...
- 怎样把excel的数据导入到sqlserver2000数据库中
在做程序的时候有时需要把excel数据导入到sqlserver2000中,以前没从外部导入过数据,今天刚做了一下导入数据,感觉还是蛮简单的,没做过之前还想着多么的复杂呢,下面就来分享一下我是如何把ex ...
- VBS将本地的Excel数据导入到SQL Server中
VBS将本地的Excel数据导入到SQL Server中 高文龙关注0人评论1170人阅读2017-05-14 12:54:44 VBS将本地的Excel数据导入到SQL Server中 最近有个测试 ...
- 使用tdload工具将本地数据导入到Teradata数据库中
想把本地的数据文件(比如txt.csv)中的数据导入到Teradata虚拟机中的表中.既可以使用Teradata Assistant中的import功能,也可以使用fastload导入,前者的缺点是一 ...
- 关于如何将Excel数据导入到SQL Server中
面对大量的Excel数据我们可能会非常苦恼,如果一条一条的插入到数据库:不仅会耗大量的时间,而且还可能会发生错误,现在我来说一下如何导入数据! 1.准备工作 首先要在Excel中建立数据表对应的数据字 ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
随机推荐
- Java多线程编程核心技术---拾遗增补
线程状态验证 public class MyThread extends Thread { public MyThread() { System.out.println("构造方法中的状态: ...
- Apache CXF实现WebService入门教程(附完整源码)
Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web s ...
- asp.net webform中使用async,await实现异步操作
摘要 最近想着将项目中的部分耗时的操作,进行异步化.就自己弄个demo进行学习.只需下面几个步骤就可以将aspx页面中注册异步操作. demo 比如我们需要抓取某个url的内容,这个时候我们可能会有下 ...
- 今天微信群需要人家通过吗?是微信bug吗
今天遇到微信群拉人的问题,所以来和大家取经,刚开始拉人一下就拉进去了,后来拉的需要人家通过,今天朋友些也帮我拉人也是这样的,所以想问下微信群扩容的问题.晚上有位朋友跟我说一次拉十个人,不能拉多,这样就 ...
- php网络编程
php面试题之三--PHP网络编程(高级部分) 三.PHP网络编程 [!!!]1.禁用COOKIE后SEESION还能用吗?(51.com笔试题) 可以,COOKIE和SESSION都是用来实现会话机 ...
- Javascript高级程序设计——函数
函数Function 通过函数封装多条语句,在任何地方执行.javascript函数不会重载,相同名字函数,名字属于后定义的函数通过function关键词声明. function functionNa ...
- 纯CSS多级菜单
主要代码部分: /*新增的二级菜单部分*/ .menu ul ul { visibility:hidden;/*开始时是隐藏的*/ position:absolute; left:0px; top:3 ...
- UNTIY3D接入91SDK的办法
原地址: http://bbs.18183.com/thread-111324-1-1.html UNITY3D接入Android-SDK 方法一:把UNITY3D游戏打成安卓项目文件,修改安卓项目文 ...
- Android学习笔记(十二)——实战:制作一个聊天界面
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 运用简单的布局知识,我们可以来尝试制作一个聊天界面. 一.制作 Nine-Patch 图片 : Nine-Pa ...
- iOS网络学习之“远离NSURLConnection 走进NSURLSession”
目前,在iOS的开发中,NURLConnection已经成为了过去式,现在的NSURLConnection已经deprected(iOS7之后),取而代之的是NSURLSession.而且AFNetw ...