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