C#——NPOI对Excel的操作、导入导出时异常处理(四)

本文介绍了C#中使用NPOI库操作Excel时的异常处理,包括数据库数据类型不匹配、空值处理,以及日期类型的导出格式设定。同时,讲解了Excel导入数据库的处理方法,建议在实际操作中使用线程提高效率。该系列教程覆盖了NPOI的基础知识、Excel导出和导入方法,是程序猿处理Excel与数据库交互的实用参考。

--------------------------------------以下异常处理-------------------------------------

一、数据库中数据类型不同、为空时处理(这个问题我在第三章强调过,设置默认值)

数据库数据

导出处理

      private void button1_Click(object sender, EventArgs e)
        {
            //1、通过ADO.NET读取数据
            string strSql = "SELECT * FROM userInfo";
            SqlDataReader reader = sqlHelper.ExecuteReader(strSql,CommandType.Text);
            if (reader.HasRows)
            {
                //------创建文件开始------
                string filePath = ""; //要导出的文件路径
                SaveFileDialog saveFile = new SaveFileDialog();
                saveFile.Filter = "Excel文件|*.xls";
                saveFile.DefaultExt = "xls";
                saveFile.FileName = "学生表";
                DialogResult dResult= saveFile.ShowDialog(); //获取用户点击的按钮 保存/取消
                filePath = saveFile.FileName; //获取导出路径
                //------创建文件结果------
                if (dResult == DialogResult.Cancel) //用户点击的按钮
                {
                    MessageBox.Show("取消导出!");
                    return;
                }               
                //创建工作簿
                IWorkbook workBook = new HSSFWorkbook();
                //创建工作表
                ISheet sheet = workBook.CreateSheet("学生表"); // 设置工作表名称
                #region 创建第一行,设置列名
                //------------------------------------------------------------
                //创建第一行,第一行表示列名
                //循环查询出每一列                
                IRow rowHead = sheet.CreateRow(0);
                for (int col = 0; col < reader.FieldCount; col++)
                {
                    rowHead.CreateCell(col).SetCellValue(reader.GetName(col)); //获取当前列的名字:reader.GetName(col)
                }
                //------------------------------------------------------------
                #endregion
                int rIndex = 1; //为什么行的索引为1呢,因为没有列名
                while (reader.Read())
                {
                    IRow currentRow = sheet.CreateRow(rIndex); //创建行
                    int id = reader.GetInt32(0);
                    string user_id = reader.GetString(1);
                    string user_pwd = reader.GetString(2);
                    string user_name = reader.GetString(3);
                    DateTime? dTime = reader.IsDBNull(4) ? null : (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值