$("#btnUploadExcelSave").click(function () {
var fileObj = document.getElementById("file").files[0]; // js 獲取文件對象
var FileController = "../FileHandler.ashx?type=3"; // 接收上傳文件的後臺地址
// FormData 對象
var form = new FormData();
form.append("author", "hooyes"); // 可以增加表單數據
form.append("file", fileObj); // 文件對象
// XMLHttpRequest 對象
var xhr = new XMLHttpRequest();
xhr.open("post", FileController, true);
xhr.onload = function () {
// alert("上傳完成!");
};
xhr.upload.addEventListener("progress", progressFunction, false);
xhr.send(form);
});
然後定義後臺方法處理Excel:
FileHandler.ashx
/// <summary>
/// Excel導入到數據庫
/// </summary>
/// <param name="context"></param>
public string UploadExcelData(HttpContext context)
{
var flist = context.Request.Files;
for (int i = 0; i < flist.Count; i++)
{
var c = flist[i];
string IsXls = System.IO.Path.GetExtension(c.FileName).ToString().ToLower();
if (IsXls != ".xls")
{
return "格式不正確!";
}
string savePath = System.Configuration.ConfigurationManager.AppSettings["temFilePath"].ToString() + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
c.SaveAs(context.Server.MapPath(savePath));//將文件保存到服務器,因爲火狐瀏覽器獲取不到客戶端的路徑。
DataSet ds = ExcelSqlConnection(context.Server.MapPath(savePath), "tranportTask");//將excel文件轉換爲DataSet。
//這裏處理你業務邏輯...
}
return "";
}
public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
System.Data.OleDb.OleDbConnection ExcelConn = new System.Data.OleDb.OleDbConnection(strCon);
try
{
string strCom = string.Format("SELECT * FROM [Sheet1$]");
ExcelConn.Open();
System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, ExcelConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + tableName + "$]");
ExcelConn.Close();
return ds;
}
catch
{
ExcelConn.Close();
return null;
}
}