C#并从Excel文件读取值

我有一个Excel文件,列有名称(数据源不受我控制..它是由客户给我的)。 虽然列更改,但列标题不会更改。

在文件中,它被称为“名字”

如何访问同一列中的每个单元格中的数据?

打开您的Excel文件作为数据库。 那么你将不必担心列的位置:

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyExcelFile.xls;Extended Properties=\"Excel 8.0;HDR=YES\""; using (var conn = new System.Data.OleDb.OleDbConnection(connString)) { conn.Open(); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("Select * From [SheetName$]", conn); OleDbDataReader reader = cmd.ExecuteReader(); int firstNameOrdinal = reader.GetOrdinal("First Name"); int lastNameOrdinal = reader.GetOrdinal("Last Name"); while (reader.Read()) { Console.WriteLine("First Name: {0}, Last Name: {1}", reader.GetString(firstNameOrdinal), reader.GetString(lastNameOrdinal)); } } 

我会看看来自微软的这个例子:

如何使用ASP.NET,ADO.NET和Visual C#.NET查询和显示Excel数据

我过去使用过excel库 ,发现它很容易使用。

我已成功使用FileHelpers Library来读取过去的Excel文件。

您可以使用ODBC连接到文件并下载工作表的内容。

  private bool DownloadExcelData(string fileName, ref DataTable informationDT) { // bool success bool success = true; // open the file via odbc string connection = ConfigurationManager.ConnectionStrings["xls"].ConnectionString; connection = String.Format(connection, FilePath + fileName); OleDbConnection conn = new OleDbConnection(connection); conn.Open(); try { // retrieve the records from the first page OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Information$]", conn); OleDbDataAdapter adpt = new OleDbDataAdapter(cmd); adpt.Fill(informationDT); } catch { success = false; } // close the connection conn.Close(); return success; } 

以下是xls和xlsx文件的一些示例ODBC连接:

 <add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;'" /> <add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0" />