将Excel文件上传到GridView

时间:2018-08-21 10:37:52

标签: c# asp.net excel

我正在开发一个系统,该系统应将Excel文件上载到GridView,然后单击按钮即可将GridView项保存到SQL表中。我做了整个事情,并在localhost中执行,没有任何错误。但是,当我将系统上传到服务器时,将Excel文件上传到GridView时出现错误。 以下是我在尝试捕获异常中遇到的错误。

  

FileShare共享,Int32 bufferSize,FileOptions选项,System.IO.FileStream..ctor(字符串路径,FileMode模式)(位于System.Web.HttpPostedFile.SaveAs(字符串文件名),位于StyleOperations.Operations处的String msgPath,布尔bFromProxy) .uploadLinkBut​​ton_Click(Object sender,EventArgs e)

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

 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

1 个答案:

答案 0 :(得分:0)

以下代码的用途是什么

get_default_field_names

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