问题:需要将用户通过ASPX页面选择的EXCEL文件,导出至数据库中。
解决思路:由于服务器端无法获取用户在客户端选择的文件全路径,所以要先将选择的EXCEL文件上传至服务器端再进行导入操作。使用ASP.NET 2.0控件“FileUpload”。
问题实现:
步骤一:先将用户选择的EXCEL文件上传至服务器端。
try
{
string saveName = System.DateTime.Now.ToFileTimeUtc() + System.IO.Path.GetExtension(this.fupExcel.FileName);
if (System.IO.Directory.Exists(Server.MapPath("~/UpFile/WageList/")))
{
this.fupExcel.SaveAs(Server.MapPath("~/UpFile/WageList/") + saveName);
}
else
{
System.IO.Directory.CreateDirectory(Server.MapPath("~/UpFile/WageList/"));
this.fupExcel.SaveAs(Server.MapPath("~/UpFile/WageList/") + saveName);
}
string fullPath = Server.MapPath("~/UpFile/WageList/") + saveName;
DataTable dtTemp = GetOneSheet("Sheet1", fullPath).Tables[0];
}
catch
{
throw;
}
步骤二:将上传的文件导入至DataSet
/// <summary>
/// 导入EXCEL至DataSet
/// </summary>
/// <param name="sheetname">要查询的Sheet名称</param>
/// <param name="Path">EXCEL文件全路径</param>
/// <returns>EXCEL内容</returns>
public static DataSet GetOneSheet(string sheetname, string Path)
{
try
{
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [" + sheetname + "$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
DataSet ds = ds = new DataSet();
myCommand.Fill(ds, "table1");
conn.Close();
return ds;
}
catch
{
throw;
}
}