如何通过连接字符串读取c#中的Excel文件?

时间:2009-09-03 13:52:06

标签: c# excel

如何阅读excel文件并在网格视图中显示其数据?我尝试了ODBC提供程序的工作,但它正在赢得“Dns = EXCELF”,连接sring怎么可能?我生成我的Excel工作表连接字符串:

Provider = MSDASQL.1; Persist Security Info = False; User ID = admin; Data Source = Excel Files; Initial Catalog = D:\ Parallelminds \ Tryouts \ sample.xlsx

这是错的吗?请指导我。我必须在哪个连接字符串...?

3 个答案:

答案 0 :(得分:4)

它因Excel版本而有所不同,但如果是2007年之前,您可以在此处找到所需内容:http://connectionstrings.com/excel

否则,浏览http://connectionstrings.com/。它在某处,我保证:)。

答案 1 :(得分:2)

public string BuildExcelConnectionString(string Filename, bool FirstRowContainsHeaders){
      return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source='{0}';Extended Properties=\"Excel 8.0;HDR={1};\"",
       Filename.Replace("'", "''"),FirstRowContainsHeaders ? "Yes" : "No");
}

public string BuildExcel2007ConnectionString(string Filename, bool FirstRowContainsHeaders){
      return string.Format("Provider=Microsoft.ACE.OLEDB.12.0;
       Data Source={0};Extended Properties=\"Excel 12.0;HDR={1}\";",
         Filename.Replace("'", "''"),FirstRowContainsHeaders ? "Yes" : "No");

}

private void ReadExcelFile(){
  string connStr = BuildExcel2007ConnectionString(@"C:\Data\Spreadsheet.xlsx", true);
  string query = @"Select * From [Sheet1$] Where Row = 2";
  System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connStr);

  conn.Open();
  System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(query, conn);
  System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
  DataTable dt = new DataTable();
  dt.Load(dr);
  dr.Close();
  conn.Close(); 
}

答案 2 :(得分:0)

Excel Data Provider非常方便。我最近在我的一个客户的网站上使用它,并进行了一些小的自定义。如果您查看代码,您应该能够清楚地了解如何从C#查询Excel。

只是一个警告:如果部署计算机上没有安装Excel,那么您将被限制为解析标准XLS文件(Office至2003),并且无法读取XLSX(Office 2007)。