首页 > 解决方案 > 将 Excel 文件上传到 GridView 时出错

问题描述

我正在开发一个系统,它应该将 Excel 文件上传到 GridView,然后单击按钮将 GridView 项目保存到 SQL 表中。我做了整个事情并在本地主机中执行,没有任何错误。但是当我将系统上传到服务器时,当我将 Excel 文件上传到 GridView 时出现错误。下面是我在 try catch 异常中遇到的错误。

FileShare 共享、Int32 bufferSize、FileOptions 选项、String msgPath、Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode) at System.Web.HttpPostedFile.SaveAs(String filename) at StyleOperations.Operations.uploadLinkBut​​ton_Click(对象发送者,EventArgs e)

我在Uploads服务器中创建了文件夹并尝试了。但是,我仍然遇到同样的错误。下面我提到了我的代码和 Excel 文件格式,有人可以帮助我。先感谢您。

 protected void uploadLinkButton_Click(object sender, EventArgs e)
    {
        try
        {
            string Constr = "";
            string ext = Path.GetExtension(StyleOperationsFileUpload.FileName).ToLower();
            string path = Server.MapPath("~/Uploads/" + StyleOperationsFileUpload.FileName);
            StyleOperationsFileUpload.SaveAs(path);
            if (ext.Trim() == ".xls")
            {
                Constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
            }
            else if (ext.Trim() == ".xlsx")
            {
                Constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
            }
            string query = "SELECT * FROM [Sheet1$]";
            OleDbConnection conn = new OleDbConnection(Constr);
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            OleDbCommand cmd = new OleDbCommand(query, conn);
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            UploadGridView.DataSource = ds.Tables[0];
            UploadGridView.DataBind();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("<script>alert('Please Restart the system')</script>" + ex);
        }
    }

Excel 文件格式如下。相同的格式将是 GridView 的格式。

| 1 |DESCRIPTION|  SMV   |SEQ NO
| 2 |   Des1    |  1.2   | 1
| 3 |   Des2    |  2.5   | 2
| 4 |   Des3    |  5.8   | 3
| 5 |   Des4    |  4.2   | 4

标签: c#asp.netexcel

解决方案


下面的代码有什么用

StyleOperationsFileUpload.SaveAs(path); //don't think it has any thing to do with this one

注意:您已将工作表名称硬编码为 Sheet1$,我认为这应该是动态的


推荐阅读