Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP将Exel文件上载到web错误:Microsoft Office Access数据库引擎无法打开或写入该文件_C#_Asp.net_Excel - Fatal编程技术网

C# ASP将Exel文件上载到web错误:Microsoft Office Access数据库引擎无法打开或写入该文件

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

在我的应用程序中,我尝试将Excel数据文件从本地计算机上载到SQL数据库到web somee.com服务器。我在当地测试过,一切正常。在我将应用程序部署到服务器机器并尝试运行之后,我得到了一个错误,如Microsoft Office Access数据库引擎无法打开或写入文件“”。它已经被另一个用户以独占方式打开,或者您需要查看和写入其数据的权限”。我尝试授予网络服务帐户对我的文件夹上载excel的修改权限,excel文件将位于该文件夹中;不幸的是,它不起作用

ASPX.CS:

    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)