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 ...
随机推荐
- Jsp与servlet的区别 1
Jsp与servlet的区别 2011-12-09 16:27:47 分类: Java 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识 ...
- CPC CPM
计算广告的分类: 根据广告主的计费方式,可以分为 千次展现付费 CPM(cost per thousand impressions) 主要用于品牌曝光,例如钻展业务 每次点击扣费 CPC(cost p ...
- salt stack 工具之一——远程命令
salt stack 远程命令 salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理.远程命令执行等操作. salt stack分为两个部分: salt-master,部署在控 ...
- AWK命令的用法
1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...
- 百度编辑器修改,不让它自动替换html标签
在ueditor.all.js中找到 UE.plugins['defaultfilter'] = function () 注释或删掉这块代码. 注:ueditor.all.min.js 中也一样,格式 ...
- Yii2创建多界面主题(Theme)
Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方: 1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理: 2. 视图文件和Web资源在目 ...
- 关于Xcode7更新之后使用 SDWebImage 图片加载不出来
解决方法:在Info.plist中添加NSAppTransportSecurity类型Dictionary. 在NSAppTransportSecurity下添加NSAllowsArbitraryLo ...
- webpack 前端构建
一.建立简单的项目目录 1.创建 manager 根目录(作为项目根目录)2.执行 npm init,在根目录manager下自动生成 package.json文件3.npm install webp ...
- 清北暑假模拟day1 生活
/* 数字三角形,要求第K大的值,可以推知,如果得知k的范围,那么一定是在上一行可转移状态的对应范围内(反证法可以证明),这个在背包九讲里也有提及 */ #include<cstdio> ...
- 微信企业号公测开启OA红海模式
之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息.[微信企业号已开通账号超过10万 日均消息量超过100万条] 今日,微 ...