就是指定这个路径:C:\Program Files (x86)\IIS Express
因为在上传到服务器的时候,服务器读取的是在服务器上的路径,所以正确的思路应该是
把上传的Excel存在服务器上,再去读取服务器上的excel,这样就行了。
有个弊端就是,需要定期去清除存在服务器上的Excel。
1 try 2 { 3 string sheetname = TextBox1.Text.Trim(); 4 if (string.IsNullOrEmpty(sheetname)) 5 { 6 ShowAlertMessage("sheetname不可为空!"); 7 return; 8 } 9 string username = Context.Items["UserName"].ToString(); 10 HttpPostedFile upLoadPostFile = FileUpload1.PostedFile; 11 string upLoadPath = upLoadPostFile.FileName; 12 int upLoadPathLength = upLoadPath.Split('\\').Length; 13 string FileName = upLoadPath.Split('\\')[upLoadPathLength - 1].ToString(); 14 15 if (upLoadPath == "") 16 { 17 ShowAlertMessage("请选择上传文件!"); 18 return; 19 } 20 string excelType = upLoadPath.Split('.')[1].ToString(); 21 if (excelType != "xls" && excelType != "xlsx") 22 { 23 ShowAlertMessage("此文件不是xls或者xlsx格式,请重新选择上传文件格式!"); 24 } 25 else 26 { 27 28 DataSet ds = GetExcelData(upLoadPostFile, sheetname, FileName); 29 DataTable dtInfo = ds.Tables[0]; 30 for (int i = 0; i < dtInfo.Rows.Count; i++) 31 { 32 string strOrderSn = dtInfo.Rows[i][0].ToString(); 33 if (string.IsNullOrEmpty(strOrderSn)) 34 { 35 ShowAlertMessage("读取数据结束"); 36 } 37 DataTable dtOrder = InvoiceData.GetOrderHead(strOrderSn).Tables[0]; 38 if (dtOrder.Rows.Count == 0) 39 { 40 throw new Exception("ChangeOrderStatusReturnGoods Error:订单不存在:" + strOrderSn + ""); 41 } 42 string OrderStatus = dtOrder.Rows[0]["OrderStatus"].ToString(); 43 if (OrderStatus != "2") 44 { 45 InvoiceData.UpdateStatusByReturnGoods(strOrderSn); 46 OrderData.OrderOperationLog(strOrderSn, username, DateTime.Now, "退货更改订单状态"); 47 } 48 } 49 } 50 ShowAlertMessage("状态更改完毕!"); 51 } 52 catch (Exception ex) 53 { 54 CustomValidator1.ErrorMessage = ex.Message; 55 CustomValidator1.IsValid = false; 56 }