做为一名开发人员来说,数据的导入导出是很常见的一件事,不管我们要的是什么格式的文件导入,都是有很多种方法来实现的,初学.net的朋友都会碰到Excel数据的导入,呵呵...我以前也是这样过来的,现在我就在这里说一下简单的Excel数据导入数据的方法:
一.数据库向导本来就可以这样导入,在Excel建的字段,必须在table表中也得有字段.
二.读取excel文件中的数据
先在类中定义一个方法名为ExecleDs的方法,用于将Excel表里的数据填充到DataSet中,代码如下:
public DataSet ExecleDs(string filenameurl,string table)
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" +filenameurl+ ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]",conn);
DataSet ds = new DataSet();
odda.Fill(ds,table);
return ds;
}
当点击添加按钮时激发事件,代码如下
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile == false)
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls=System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();
if (IsXls != ".xls")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
string error = null;
Access.Class1 ac = new Access.Class1();
SqlConnection cn = ac.myConnection();
cn.Open();
string strpath = FileUpload1.PostedFile.FileName.ToString(); //获取Execle文件路径
string filename = FileUpload1.FileName; //获取Execle文件名
DataSet ds = ac.ExecleDs(strpath,filename);
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
}
else
{
for (int i = 0; i < dr.Length; i++)
{
string YHMC = dr[i]["YongHuMingCheng"].ToString();
string YHMM = dr[i]["YongHuMiMa"].ToString();
string DQRQ = dr[i]["DaoQiRiQi"].ToString();
string ZT = dr[i]["ZhuangTai"].ToString();
string TJSJ = dr[i]["TianJiaShiJian"].ToString();
string JXDM = dr[i]["JiaXiaoDaiMa"].ToString();
string sqlcheck = "select count(*) from DC_YongHuLieBiao where YongHuMingCheng='" + YHMC + "'And JiaXiaoDaiMa='" + JXDM + "'"; //检查用户是否存在
bool ch = ac.check(sqlcheck);
if (ch == true)
{
string insertstr = "insert into DC_YongHuLieBiao(YongHuMingCheng,YongHuMiMa,DaoQiRiQi,ZhuangTai,TianJiaShiJian,JiaXiaoDaiMa) values('" +
YHMC + "','" + YHMM + "','" + DQRQ + "','" + ZT + "','" + TJSJ + "','" + JXDM + "')";
SqlCommand cmd = new SqlCommand(insertstr,cn);
try
{
cmd.ExecuteNonQuery();
} catch (MembershipCreateUserException ex) //捕捉异常
{
Response.Write("<script>alert('创建用户:"+ex.Message+"')</script>");
}
}
else
{
error += "<em style='color:red;font-sixe:25px'>"+YHMC+"</em>用户已存在,此行记录无法插入!请修改用户再进行插入 <br>"; //若用户存在,将已存在用户信息打出,并提示此用户无法插入
continue;
}
}
Response.Write("<script>alert('Excle表导入成功!')</script>");
Label1.Text = error;
}
cn.Close();
}
Access数据库的导入也是类似的,只要该掉sql为oledb就ok了,还有数据导出为Excel文件,下次将会给大家介绍。