I)思路:
A:先将Excel表格导入到DataSet集合中
B:再将DataSet集合中的数据导入到数据库中
II)简单页面显示:
III)具体的代码实现:
1、当点击导入按钮时执行的代码:
protected void Import_Click(object sender, EventArgs e)
{
//进行简单的格式判断
Regex regex = new Regex(".+//.xls$");
string filepath = FileUpload1.PostedFile.FileName;
if (filepath != "")
{
if (regex.Match(filepath).Success)
{
string newFilePath = filepath.Replace("//", "////");
DataSet ds = ExcelToDS(newFilePath);
//通过exceptionFlag标志判断要导入的Excel文件的格式是否正确
if (exceptionFlag != 1)
{
DSToExcel(newFilePath, ds);
}
else
{
Response.Write("<script>alert('您导入的Excel文件格式不正确,请核查后在导入!');window.location.href='selectCbsjMethod.aspx';</script>");
}
}
else
{
Response.Write("<script>alert('您选择的不是Excel文件,请重新选择!');window.location.href='selectCbsjMethod.aspx';</script>");
}
}
else
{
Response.Write("<script>alert('您还没有选择Excel文件,请选择!');window.location.href='selectCbsjMethod.aspx';</script>");
}
}
2、将Excel表中的信息导入到DataSet集合中:
/// <summary>
/// 将Excel表中的数据导入的DataSet集合中
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public DataSet ExcelToDS(string path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + "Extended Properties=Excel 8.0";
OleDbConnection conn = new OleDbConnection(strConn);
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
//从Excel的一个工作表中导入数据到数据库中
strExcel = "select * from [Sheet1$]";
try
{
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table2");
}
catch (Exception e)
{
exceptionFlag = 1;
}
finally
{
conn.Close();
}
return ds;
}
3、将DataSet集合中的数据导入到数据库中:
/// <summary>
/// 将DataSet集合中的数据导入的数据库中
/// </summary>
/// <param name="path"></param>
/// <param name="oldds"></param>
public void DSToExcel(string path, DataSet oldds)
{
//先用正则表达式对导入到DataSet集合中的数据进行验证,看格式是否正确。
//若格式有错误,则提示用户进行修改,修改后再导入。
//只有格式都正确后,才将DataSet集合中的数据全部导入到数据库中。
//若有一条记录的验证没有通过,则其余合法的记录也没法导入数据库中。
}
IV)参考资料:
http://topic.csdn.net/u/20080712/16/809df02e-ece8-4481-b83b-6f7aca95a7a0.html