/// <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数据库中的更多相关文章

  1. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  2. 用ttBulkCp把excel中的数据导入到timesten数据库中

    最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...

  3. 把excel中的数据导入到Oracle数据库中

    从事工作以来,数据库一直使用oracle,却不知道excel导入oracle,今天看了一篇文章,分享给大家,希望对大家有用. https://jingyan.baidu.com/article/0f5 ...

  4. 图解如何 将Excel里的数据导入到sql server数据库中

    项目中,经常会碰到如何将Excel里的数据导入到sql server中的问题. 下面,图解如何实现导入Excel中的数据到sql server 2008 R2: Excel截图如下: 查询pub数据库 ...

  5. 怎样把excel的数据导入到sqlserver2000数据库中

    在做程序的时候有时需要把excel数据导入到sqlserver2000中,以前没从外部导入过数据,今天刚做了一下导入数据,感觉还是蛮简单的,没做过之前还想着多么的复杂呢,下面就来分享一下我是如何把ex ...

  6. VBS将本地的Excel数据导入到SQL Server中

    VBS将本地的Excel数据导入到SQL Server中 高文龙关注0人评论1170人阅读2017-05-14 12:54:44 VBS将本地的Excel数据导入到SQL Server中 最近有个测试 ...

  7. 使用tdload工具将本地数据导入到Teradata数据库中

    想把本地的数据文件(比如txt.csv)中的数据导入到Teradata虚拟机中的表中.既可以使用Teradata Assistant中的import功能,也可以使用fastload导入,前者的缺点是一 ...

  8. 关于如何将Excel数据导入到SQL Server中

    面对大量的Excel数据我们可能会非常苦恼,如果一条一条的插入到数据库:不仅会耗大量的时间,而且还可能会发生错误,现在我来说一下如何导入数据! 1.准备工作 首先要在Excel中建立数据表对应的数据字 ...

  9. 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库

    以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...

随机推荐

  1. linq group join

    本篇介绍Linq的Group和Join操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. GroupGroup是进行分组操作,同SQL中的Group By类似.原型如下: p ...

  2. App Extension Today

     App Extensions 是iOS8新开放的扩展机制,之后不断增加功能.App Extension Programming Guide: Today   不喜欢废话,直接上干货!   一:重要概 ...

  3. cookie和session的对比

    1.存放的位置     cookie存在客户端的临时文件夹     session:存在服务器的内存中,一个session域对象为一个用户浏览器服务. 2.安全性   cookie是以明文方式存放在客 ...

  4. gradle 默认属性

    Properties(未翻译) Property Description allprojects 包含该项目及其子项目的属性 ant The AntBuilder for this project. ...

  5. Android Studio-设置鼠标悬停显示方法声明

  6. mongodb 基本用法大全

    1>给数据库添加用户名密码    db.addUser("xxx","yyy") 2>

  7. UML类图之类与类的关系

    类与类之间的关系是在需求分析阶段确定的. 类与类之间的关系.有一般化关系.关联关系.聚合关系.合成关系和依赖关系. 1.一般化关系表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关 ...

  8. LINUX 命令行编辑快捷键

    转自:http://www.cnblogs.com/edwardlost/archive/2012/07/27/2611536.html 删除 ctrl + d 删除光标所在位置上的字符相当于VIM里 ...

  9. 推荐近期15个 Node.js 开发工具

    近来Node.js 越来月流行了,这个基于Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些 ...

  10. Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在某些情况下,为了安全起见,大部分公司都会使用域控制器或只会给员工电脑user的用户权限,这样做能大大提高安全性和可控性,但由此也带 ...