c#.net Excel中的数据导入到SQL数据库中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#.net Excel中的数据导入到SQL数据库中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5235字,纯文字阅读大概需要8分钟。
内容图文
/// <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; }
}
}
原文:http://www.cnblogs.com/914556495wxkj/p/4360952.html
内容总结
以上是互联网集市为您收集整理的c#.net Excel中的数据导入到SQL数据库中全部内容,希望文章能够帮你解决c#.net Excel中的数据导入到SQL数据库中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。