Ajax asp.net 導入Excel

首先使用ajax以POST的方式提交excel文件:
$("#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;
        }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章