从OleDbConnection读取Excel文件数据

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

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

  • 用户将一个excelfile upload到服务器的一个文件夹中。 ex @"~/PlanQuantityFile/" 。 它确实上传成功。

面临的问题:

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

  • 这里是我寻找的一些领域,但仍然无法解决我的问题。

解决方法:

  1. 连接打开,但从来没有closures,所以用尽连接。 (但是我closures了它,脚本在close语句之前停止运行)

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

  3. 许可问题。 需要设置ASP.NET帐户的权限。 (我仍然在为ASP.NET帐户find对象名称)

感谢任何想要帮助的人。 你的build议是非常宝贵的。

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

以下代码为选定的文件位置源返回一个数据表。 请记住将图纸名称重命名为“Sheet1”。

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

function::::

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

您可以使用提到的function来读取您必须传递Excel文件path的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; }