C# ASP将Exel文件上载到web错误:Microsoft Office Access数据库引擎无法打开或写入该文件
在我的应用程序中,我尝试将Excel数据文件从本地计算机上载到SQL数据库到web somee.com服务器。我在当地测试过,一切正常。在我将应用程序部署到服务器机器并尝试运行之后,我得到了一个错误,如Microsoft Office Access数据库引擎无法打开或写入文件“”。它已经被另一个用户以独占方式打开,或者您需要查看和写入其数据的权限”。我尝试授予网络服务帐户对我的文件夹上载excel的修改权限,excel文件将位于该文件夹中;不幸的是,它不起作用 ASPX.CS:C# ASP将Exel文件上载到web错误:Microsoft Office Access数据库引擎无法打开或写入该文件,c#,asp.net,excel,C#,Asp.net,Excel,在我的应用程序中,我尝试将Excel数据文件从本地计算机上载到SQL数据库到web somee.com服务器。我在当地测试过,一切正常。在我将应用程序部署到服务器机器并尝试运行之后,我得到了一个错误,如Microsoft Office Access数据库引擎无法打开或写入文件“”。它已经被另一个用户以独占方式打开,或者您需要查看和写入其数据的权限”。我尝试授予网络服务帐户对我的文件夹上载excel的修改权限,excel文件将位于该文件夹中;不幸的是,它不起作用 ASPX.CS: stat
static string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
public static string path = @"C:\UploadExcel\Sheet1.xls";
public static string connStexcelConnectionStringr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
protected void Page_Load(object sender, EventArgs e)
{
txtTime.Attributes.Add("readonly", "readonly");
string department_login = "";
bool check_login = authenticate.isAuthenticated();
if (check_login == false)
{
Response.Redirect("SPC_HP_trangdangnhap.aspx");
}
if (!this.IsPostBack)
{
string username = Session["UserId"].ToString();
department_login = authenticate.authenticateLogin(username);
if (!department_login.Equals("Kế toán"))
{
Response.Redirect("SPC_HP_trangdangnhap.aspx");
}
else
{
BindGrid();
}
}
}
private void BindGrid()
{
DateTime Day_Today = DateTime.Today;
string today = Day_Today.ToString("yyyy-MM-dd");
String strCmd = "";
DataSet ds = new DataSet();
strCmd += "SELECT ProductSPCCode, MaterialNameDB, ProductUnitStock, REPLACE(CONVERT(varchar,CONVERT(Money, ProductTypeA),1),'.00','') AS ProductTypeA, REPLACE(CONVERT(varchar,CONVERT(Money, ProductTypeB),1),'.00','') AS ProductTypeB ";
strCmd += "FROM ProductStockTemp ";
strCmd += "WHERE ProductStockTime = '"+ today + "'";
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
SqlCommand cmd = new SqlCommand(strCmd, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
con.Close();
if (ds.Tables[0].Rows.Count == 0)
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
grdProductStock.DataSource = ds;
grdProductStock.DataBind();
int column_count = grdProductStock.Rows[0].Cells.Count;
grdProductStock.Rows[0].Cells.Clear();
grdProductStock.Rows[0].Cells.Add(new TableCell());
grdProductStock.Rows[0].Cells[0].ColumnSpan = column_count;
grdProductStock.Rows[0].Cells[0].Text = "Chưa có tồn kho!";
}
else
{
grdProductStock.DataSource = ds;
grdProductStock.DataBind();
}
}
}
protected void btnUpload_Click(object sender, EventArgs e)
{
string excelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HRD=YES;IMEX=1'", fupExcel.PostedFile.FileName);
string timeJ = txtTime.Text;
string time = DateTime.ParseExact(timeJ, "dd'/'MM'/'yyyy", CultureInfo.InvariantCulture).ToString("yyyy'-'MM'-'dd");
DateTime.ParseExact(time, "yyyy-MM-dd", CultureInfo.InvariantCulture);
DateTime Day_Today = DateTime.Today;
string today = Day_Today.ToString("yyyy-MM-dd");
string file_Path = fupExcel.PostedFile.FileName;
string file_name = Path.GetFileName(file_Path);
string ext = Path.GetExtension(file_name);
string type = String.Empty;
if (!fupExcel.HasFile)
{
Response.Write("<script language='javascript'>alert('Xin chọn file Excel!!!')</script>");
return;
}
else
if (fupExcel.HasFile)
{
switch (ext)
{
case ".xls":
type = "application/vnd.ms-excel";
break;
/*case ".xlsx":
type = "application/vnd.ms-excel";
break;*/
}
if (type != String.Empty)
{
try
{
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd_delete = new SqlCommand("DELETE FROM ProductStockTemp WHERE ProductStockTime = '"+ time +"'"))
{
cmd_delete.Connection = con;
con.Open();
cmd_delete.ExecuteNonQuery();
}
con.Close();
con.Dispose();
}
}
catch (Exception ex)
{
throw ex;
}
using (OleDbConnection connection = new OleDbConnection(connStexcelConnectionStringr))
{
OleDbCommand command = new OleDbCommand(("Select *,'" + time + "' as [productTime] FROM [Sheet1$]"), connection);
connection.Open();
using (DbDataReader dr = command.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(constr))
{
bulkCopy.DestinationTableName = "ProductStockTemp";
bulkCopy.ColumnMappings.Add("productTime", "ProductStockTime");
bulkCopy.ColumnMappings.Add("MÃ HÀNG", "ProductSPCCode");
bulkCopy.ColumnMappings.Add("TÊN HÀNG", "MaterialNameDB");
bulkCopy.ColumnMappings.Add("ĐVT", "ProductUnitStock");
bulkCopy.ColumnMappings.Add("LOẠI A", "ProductTypeA");
bulkCopy.ColumnMappings.Add("LOẠI B", "ProductTypeB");
try
{
bulkCopy.WriteToServer(dr);
Response.Write("<script language='javascript'>alert('Dữ liệu tồn kho Excel đã nhập vảo CSDL thành công!!!')</script>");
BindGrid();
}
catch (Exception ex)
{
throw ex;
}
finally
{
dr.Close();
}
}
}
}
}
else
{
Response.Write("<script language='javascript'>alert('Xin chọn file Excel có phần mở rộng .xls!!!')</script>");
return;
}
}
}
/* Method to exit */
protected void imgExit_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("KT_trangchu.aspx");
}
}
static string constr=ConfigurationManager.ConnectionStrings[“constr”].ConnectionString;
公共静态字符串路径=@“C:\UploadExcel\Sheet1.xls”;
公共静态字符串connStexcelConnectionStringr=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+path+”;扩展属性=excel12.0;”;
受保护的无效页面加载(对象发送方、事件参数e)
{
Add(“readonly”、“readonly”);
字符串department_login=“”;
bool check_login=authenticate.isAuthenticated();
如果(检查_login==false)
{
响应.重定向(“SPC_HP_trangdanghap.aspx”);
}
如果(!this.IsPostBack)
{
字符串username=Session[“UserId”].ToString();
部门登录=authenticate.authenticateLogin(用户名);
如果(!department_login.Equals)(“Kế 托安)
{
响应.重定向(“SPC_HP_trangdanghap.aspx”);
}
其他的
{
BindGrid();
}
}
}
私有void BindGrid()
{
DateTime Day_Today=DateTime.Today;
string today=Day_today.ToString(“yyyy-MM-dd”);
字符串strCmd=“”;
数据集ds=新数据集();
strCmd+=“选择ProductSPCCode、MaterialNameDB、ProductUnitStock、替换(转换(varchar、转换(Money、ProductTypeA)、1)、'.00'、''作为ProductTypeA、替换(转换(varchar、转换(Money、ProductTypeB)、1)、'.00'、'')作为ProductTypeB”;
strCmd+=“来自ProductStockTemp”;
strCmd+=“其中ProductStockTime='”+今天+“'”;
使用(SqlConnection con=newsqlconnection(cont))
{
con.Open();
SqlCommand cmd=新的SqlCommand(strCmd,con);
SqlDataAdapter da=新的SqlDataAdapter(cmd);
da.填充(ds);
con.Close();
if(ds.Tables[0].Rows.Count==0)
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
grdProductStock.DataSource=ds;
grdProductStock.DataBind();
int column_count=grdProductStock.Rows[0].Cells.count;
grdProductStock.Rows[0]。Cells.Clear();
grdProductStock.Rows[0].Cells.Add(new TableCell());
grdProductStock.Rows[0]。单元格[0]。ColumnSpan=column\u count;
grdProductStock.Rows[0]。单元格[0]。Text=“Chưa cótồ!;
}
其他的
{
grdProductStock.DataSource=ds;
grdProductStock.DataBind();
}
}
}
受保护的void btnUpload\u单击(对象发送方,事件参数e)
{
字符串excelConnectionString=string.Format(“提供程序=Microsoft.Jet.OLEDB.4.0;数据源={0};扩展属性='Excel 8.0;HRD=YES;IMEX=1',fupExcel.PostedFile.FileName”);
字符串timeJ=txtTime.Text;
字符串时间=DateTime.ParseExact(timeJ,“dd'/'MM'/'yyyy”,CultureInfo.InvariantCulture).ToString(“yyyy'-'MM'-'dd”);
ParseExact(时间,“yyyy-MM-dd”,CultureInfo.InvariantCulture);
DateTime Day_Today=DateTime.Today;
string today=Day_today.ToString(“yyyy-MM-dd”);
字符串文件_Path=fupExcel.PostedFile.FileName;
字符串file\u name=Path.GetFileName(文件路径);
字符串ext=Path.GetExtension(文件名);
字符串类型=string.Empty;
如果(!fupExcel.HasFile)
{
响应。写入(“警报('Xin chọn文件Excel!!!')”;
返回;
}
其他的
if(fupExcel.HasFile)
{
交换机(分机)
{
案例“.xls”:
type=“application/vnd.ms excel”;
打破
/*案例“.xlsx”:
type=“application/vnd.ms excel”;
中断*/
}
if(type!=String.Empty)
{
尝试
{
使用(SqlConnection con=newsqlconnection(cont))
{
使用(SqlCommand cmd_delete=new SqlCommand(“从ProductStockTemp中删除,其中ProductStockTime='“+time+”))
{
cmd_delete.Connection=con;
con.Open();
cmd_delete.ExecuteNonQuery();
}
con.Close();
con.Dispose();
}
}
捕获(例外情况除外)
{
掷骰子;
}
使用(OLEDB连接=新OLEDB连接(connStexcelConnectionStringr))
{
OleDbCommand命令=新的OleDbCommand((“从[Sheet1$]”中选择*,“+time+”,作为[productTime]),连接);
connection.Open();
使用(DbDataRe)