导入导出

 

浏览

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "excel文件|*.xls";            
if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK)            
{                
  return;          
}            
txtAddress.Text = ofd.FileName;


 

导入数据按钮代码:

if (!txtAddress.Text.EndsWith(@".xls"))
            {
                MessageBox.Show("选择的数据源类型错误,请选择excel文件(.xls类型)");
                return;
            }
            if (!File.Exists(txtAddress.Text))
            {
                MessageBox.Show("文件不存在,请重新选择文件!");
                return;
            }

            //执行导入数据操作
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "insert into T_users(fName,fPassword) values(@name,@password)";

                    using (FileStream fs = File.OpenRead(txtAddress.Text))
                    {
                        HSSFWorkbook workbook = new HSSFWorkbook(fs);//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档
                        ISheet sheet = workbook.GetSheetAt(0);//获得excel中的第一个sheet表格,也可以如以古通过表格“名称”获得相应的sheet,但不如根据序号获得好,因为名称可以修改,对于程序读取来说必须使用默认表格名称
                        //ISheet sheet = workbook.GetSheet("sheet1");

                        int count = 0;//计数器

                        //---------遍历sheet的所有数据行,从第一行到最后一行-----------
                        for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++)
                        {
                            //获得sheet的每一行
                            IRow row = sheet.GetRow(i);

                            //获得第一行对应的用户名和密码
                            string cellName = row.GetCell(0).ToString().Trim();
                            string cellPassword = row.GetCell(1).ToString().Trim();

                            cmd.Parameters.Clear();//先对参数进行清空                        
                            cmd.Parameters.AddWithValue("name", cellName);
                            cmd.Parameters.AddWithValue("password", cellPassword);
                            cmd.ExecuteNonQuery();//这里必须要保证导入数据库字段类型适合数据库字段类型

                            count++;
                        }
                        MessageBox.Show(count + "条数据导入成功");
                        Application.Exit();//程序退出
                    }
                }
            }


 

导出数据按钮代码:

 

//设定保存地址
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "excel文件|*.xls";//自动保存文件类型

            if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;//如果用户没有选择确定,则不进行以后操作
            }

            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_users";//选择所有数据

                    //创建xls文件
                    HSSFWorkbook workbook = new HSSFWorkbook();
                    //创建sheet表单,默认名称为sheet1
                    ISheet sheet = workbook.CreateSheet("用户数据");
                    //创建 用户数据 表格的行,并设定第一行的表头
                    IRow rowTitle = sheet.CreateRow(0);
                    //第1行 第1列为“序号” 第2列为“用户名” 第3列为“密码”
                    rowTitle.CreateCell(0, CellType.STRING).SetCellValue("序号");
                    rowTitle.CreateCell(1, CellType.STRING).SetCellValue("用户名");
                    rowTitle.CreateCell(2, CellType.STRING).SetCellValue("密码");

                    //创建第2行以后的内容行
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        int rowNum = 1;//第2行内容,第1已被表头“用户名”和“密码”占用
                        while (reader.Read())
                        {
                            //逐行遍历取出数据库中有 用户名 和 密码
                            string dbUserName = reader.GetString(reader.GetOrdinal("fName"));
                            string dbPassword = reader.GetString(reader.GetOrdinal("fPassword"));

                            //对从数据库中取出的数据插入到excel的sheet表格中
                            IRow rowContent = sheet.CreateRow(rowNum);//创建内容行

                            //对第1行对应的单元格分别设定单元格内容属性和填充对应的值
                            rowContent.CreateCell(0, CellType.STRING).SetCellValue(rowNum);
                            rowContent.CreateCell(1, CellType.STRING).SetCellValue(dbUserName);
                            rowContent.CreateCell(2, CellType.STRING).SetCellValue(dbPassword);
                            rowNum++;//动态增加行号
                        }
                        MessageBox.Show(rowNum - 1 + "条数据导出成功");//实际导出的数据比定义的行号少1
                    }

                    //写入excel文件
                    using (FileStream fs = new FileStream(sfd.FileName, FileMode.Create, FileAccess.Write))
                    {
                        workbook.Write(fs);//把流写入文件
                    }
                }
            }



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值