/// <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. Jsp与servlet的区别 1

     Jsp与servlet的区别 2011-12-09 16:27:47 分类: Java 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识 ...

  2. CPC CPM

    计算广告的分类: 根据广告主的计费方式,可以分为 千次展现付费 CPM(cost per thousand impressions) 主要用于品牌曝光,例如钻展业务 每次点击扣费 CPC(cost p ...

  3. salt stack 工具之一——远程命令

    salt stack 远程命令 salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理.远程命令执行等操作. salt stack分为两个部分: salt-master,部署在控 ...

  4. AWK命令的用法

    1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...

  5. 百度编辑器修改,不让它自动替换html标签

    在ueditor.all.js中找到 UE.plugins['defaultfilter'] = function () 注释或删掉这块代码. 注:ueditor.all.min.js 中也一样,格式 ...

  6. Yii2创建多界面主题(Theme)

    Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方: 1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理: 2. 视图文件和Web资源在目 ...

  7. 关于Xcode7更新之后使用 SDWebImage 图片加载不出来

    解决方法:在Info.plist中添加NSAppTransportSecurity类型Dictionary. 在NSAppTransportSecurity下添加NSAllowsArbitraryLo ...

  8. webpack 前端构建

    一.建立简单的项目目录 1.创建 manager 根目录(作为项目根目录)2.执行 npm init,在根目录manager下自动生成 package.json文件3.npm install webp ...

  9. 清北暑假模拟day1 生活

    /* 数字三角形,要求第K大的值,可以推知,如果得知k的范围,那么一定是在上一行可转移状态的对应范围内(反证法可以证明),这个在背包九讲里也有提及 */ #include<cstdio> ...

  10. 微信企业号公测开启OA红海模式

    之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息.[微信企业号已开通账号超过10万 日均消息量超过100万条] 今日,微 ...