/// <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. JavaBean出现的目的

    一.JavaBean出现的目的 由于只用JSP开发会发现使用了很多的Scriptlet,会使得jsp文件非常混乱.如果使用了JavaBean,则可以大大减少JSP中代码量. JSP的理想状态是只负责显 ...

  2. CSV文件的读取 导出

    CSV文件是 逗号分隔值文件 内容基本是这么存的... 姓名,年龄,性别/r/n王有才,,男/r/n王二妞,,女 一行值内用逗号 , 分开  行与行之间用  /r/n  分隔 说白了,他其实是一个字符 ...

  3. JavaScript中一些怪异用法的理解

    引言 JavaScript这门语言有些场合的用法还是比较怪异的.这篇文章会尽量将这门语言特有的一些比较特殊的用法收集在一起.就当是平时开发时需要注意的地方吧. 特殊用法收集 1.!!用法 在JavaS ...

  4. Yii2-Redis使用小记 - Cache(转)

    前些天简单学习了下 Redis,现在准备在项目上使用它了.我们目前用的是 Yii2 框架,在官网搜索了下 Redis,就发现了yii2-redis这扩展. 安装后使用超简单,打开 common/con ...

  5. [C#基础]c#中的BeginInvoke和EndEndInvoke

    摘要 异步这东西,真正用起来的时候,发现事情还是挺多的,最近在项目中用到了异步的知识,发现对它还是不了解,处理起来,走了不少弯路.觉得还是补一补还是很有必要的. MSDN原文地址:https://ms ...

  6. underflow 、overflow 下溢和上溢

    在strtoull函数返回值中,就提到上溢和下溢的问题,现在把这俩个概念拿出来涨涨见识! 上溢  Overflow 是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数 ...

  7. nginx -s reload失败

    在重启nginx时报错误. wangkongming@ThinkPad-T410 ~ $ sudo /usr/sbin/nginx -s reload nginx: [error] invalid P ...

  8. 关于yaf 框架的win安装

    http://www.sunqinglin.cn/index.php/archives/329.html PHP windows下yaf框架的安装和配置 2014年10月28日 ⁄ PHP, 编程开发 ...

  9. hdu 4960 Another OCD Patient (最短路 解法

    http://acm.hdu.edu.cn/showproblem.php?pid=4960 2014 Multi-University Training Contest 9 Another OCD ...

  10. Web 前端

    全栈的定义是什么? 如果 前端开发/后端开发/部署/运维 都能hold住就算full stack, 我现在都overflow stack了, 需求/架构/开发/项目管理/运维 都做.  单开发这块, ...