从OleDbConnection读取Excel文件数据

时间:2014-05-02 05:02:10

标签: c# asp.net excel

我目前面临一个问题,即我不知道如何修复它。

我将预编译的项目上传到IIS。这是我对此页面的目的:

  • 用户将excel文件上传到服务器的文件夹中。前@"~/PlanQuantityFile/"。它确实上传成功。

面临的问题:

  • 当我的脚本尝试打开excel文件(用于提取数据)而不显示任何错误时,它会停止。在第881行,如图所示。

  • 这是我寻求的几个方面,但它仍然无法解决我的问题。

可能的解决方案:

  1. 连接打开但从未关闭,因此连接断开。 (但我关闭它并且脚本在关闭语句之前停止运行)

  2. 32位程序调用64位局。 (我对硬件领域的知识有限,不知道我该怎么办才能排除故障)

  3. 权限问题。需要设置ASP.NET帐户的权限。 (我仍然找到ASP.NET帐户的对象名称)

  4. 感谢任何想要帮助的人。你的建议非常宝贵。

    OleDbConnection oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + SaveLocation + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';");
    
    OleDbConnection connExcel = oledbConn;
    OleDbCommand cmdExcel = new OleDbCommand();
    OleDbDataAdapter oda = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    cmdExcel.Connection = connExcel;
    
    //Get the name of Sheet
    try
    {
        connExcel.Open();// It stops here without showing errors.
    }
    catch (Exception ex)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + ex.Message + "');", true);
    }           
    

2 个答案:

答案 0 :(得分:4)

以下代码返回所选文件位置源的数据表。请记住将工作表名称重命名为“Sheet1”。

使用命名空间:using System.Data.OleDb;

功能::::

    public DataTable GetExcelinDatatable(string filelocation)
    {            
        DataTable dt = new DataTable();
        string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filelocation + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
        OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
        con.Open();
        OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter("select * from [SHEET1$]", con);
        da.Fill(dt);
        con.Close();

        return dt;
    }

答案 1 :(得分:0)

你可以使用上面提到的函数来读取你只需要传递excel文件路径的Excel文件

 private List<DataTable> readExcel(string strXLS)
{
    //DataTable dtExcel = getExcelSheetTable();
    List<DataTable> SheetsData = new List<DataTable>();
    DataTable dtExcel = new DataTable();
    DataTable SocialMediaExcel = new DataTable();
    string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strXLS + ";Extended Properties=Excel 12.0;";
    try
    {
        OleDbDataAdapter adpt = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connStr);
        adpt.Fill(dtExcel);
        SheetsData.Add(dtExcel);


    }
    catch (Exception ex)
    {
        throw ex;
    }


    return SheetsData;
}