在下拉菜单中使用C#加载excel列数据

我想在Excel中加载一个列到一个可select的下拉菜单使用C#。 我有权访问该文件,并可以在C#中加载文件,但不知道如何实现我想要的。 build议? (我正在使用Visual Studio 2008)

您可以使用OleDb托pipe数据提供程序来读取使用ADO.NET的Excel电子表格,就像使用数据库一样。

using System.Data.OleDb; DataTable dt = new DataTable(); string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Book1.xls;Extended Properties='Excel 8.0;HDR=NO'"; using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); //Where [F1] = column one, [F2] = column two etc, etc. OleDbCommand selectCommand = new OleDbCommand("select [F1] AS [id] from [Sheet1$]",conn); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.SelectCommand = selectCommand; adapter.Fill(dt); } listBox1.DataSource = dt; listBox1.DisplayMember = "id"; 

你可以实现一个像这样的PIA解决scheme(假设第一个工作表的列“A”中有5个项目):

 using Excel = Microsoft.Office.Interop.Excel; ... worksheet = workbook.Worksheets[1] as Excel.Worksheet; Excel.Range range; range = worksheet.get_Range("A1", "A5") as Excel.Range; foreach (Excel.Range cell in range.Cells) { myComboBox.Items.Add(cell.Value2 as string); } 

如果在运行时的下拉菜单中不知道确切的数字,则需要search范围以查找结尾; 看看这个例子在这里 。

此示例使用Office 2007 PIA,如果您使用的是旧版本,则语法应该非常接近,但可能会有所不同。

据我所知,你只有几个select:

  • 主互操作程序集 (PIA),使您可以从Excel对象模型中读取和写入。
  • 构build一个用于Office的Visual Studio工具 (VSTO)解决scheme,可以有效地让您为您的Excel电子表格编写“代码隐藏”。 根据你想要达到的目标,如果你真的在Excel中做了很多工作,你的当前应用程序实际上只是为电子表格用户界面创build一个扩展。