C# 从OLEDB连接读取Excel文件数据

C# 从OLEDB连接读取Excel文件数据,c#,asp.net,excel,C#,Asp.net,Excel,我目前面临一个问题,我不知道如何解决它 我将预编译的项目上载到IIS中。以下是我本页的目的: 用户将excel文件上载到服务器中的文件夹中。ex@“~/PlanQuantityFile/”。它确实成功上传了 面临的问题: 当我的脚本试图打开excel文件(用于提取数据)而不显示任何错误时,它将停止。在第881行,如图所示 这里是我寻找的几个领域,但它仍然不能解决我的问题 可能的解决方案: 连接已打开,但从未关闭,因此连接耗尽。(但我确实关闭了它,脚本在close语句之前停止运行) 调用6

我目前面临一个问题,我不知道如何解决它

我将预编译的项目上载到IIS中。以下是我本页的目的:

  • 用户将excel文件上载到服务器中的文件夹中。ex
    @“~/PlanQuantityFile/”
    。它确实成功上传了
面临的问题:

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

  • 这里是我寻找的几个领域,但它仍然不能解决我的问题

可能的解决方案:

  • 连接已打开,但从未关闭,因此连接耗尽。(但我确实关闭了它,脚本在close语句之前停止运行)

  • 调用64位office的32位程序。(我对硬件领域的知识有限,不知道在这里应该做些什么来排除故障)

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

  • 谢谢所有想帮忙的人。你的建议是无价的

    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);
    }           
    

    您可以使用上述函数读取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;
    }
    
    private List readExcel(字符串strXLS)
    {
    //DataTable dtExcel=getExcelSheetTable();
    列表表数据=新列表();
    DataTable dtExcel=新的DataTable();
    DataTable SocialMediaExcel=新DataTable();
    string connStr=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+strXLS+”;扩展属性=excel12.0;”;
    尝试
    {
    OleDbDataAdapter adpt=新的OleDbDataAdapter(“从[Sheet1$]中选择*”,connStr);
    自动填充(dtExcel);
    SheetsData.Add(dtExcel);
    }
    捕获(例外情况除外)
    {
    掷骰子;
    }
    返回数据;
    }
    
    您可以使用上述函数读取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;
    }
    
    private List readExcel(字符串strXLS)
    {
    //DataTable dtExcel=getExcelSheetTable();
    列表表数据=新列表();
    DataTable dtExcel=新的DataTable();
    DataTable SocialMediaExcel=新DataTable();
    string connStr=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+strXLS+”;扩展属性=excel12.0;”;
    尝试
    {
    OleDbDataAdapter adpt=新的OleDbDataAdapter(“从[Sheet1$]中选择*”,connStr);
    自动填充(dtExcel);
    SheetsData.Add(dtExcel);
    }
    捕获(例外情况除外)
    {
    掷骰子;
    }
    返回数据;
    }
    
    以下代码返回所选filelocation源的数据表。请记住将sheetname重命名为“Sheet1”

    使用名称空间:使用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;
        }
    

    以下代码返回选定filelocation源的datatable。请记住将sheetname重命名为“Sheet1”

    使用名称空间:使用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;
        }