导入导出

来源:互联网 发布:centos 清理磁盘空间 编辑:程序博客网 时间:2024/05/22 04:27

 

浏览

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);//把流写入文件                    }                }            }



 

原创粉丝点击