C#使用后期绑定来读取Excel

嗨,我没有使用迟到的绑定之前,但它似乎是解决scheme,只要我能find一个简洁的例子!

或者可能这不是解决scheme,但我相信你们会知道!

我需要从excel中的列中填充一个下拉列表中的combist列表,读到第一个空白单元格。 解决scheme需要与Excel 2003及以上的一些PC一起工作,一些PC从未有过2003安装,其他的从2003年开始升级,有些还在2003年!

我需要一个适用于上述所有方法的解决scheme。

所以我正在寻找晚绑定这是正确的方式去? Linq会帮忙吗?

它是一个使用.Net 4的clasic windows Form应用程序。

我想我会写一个方法,采用文件名和path,并返回一个列表,然后我将分配给combobox。

但是,新的我没有得到通过去!

任何帮助/例子请

这听起来像是你正在使用安装在客户端机器上的Excel应用程序来使用COM interop / automation。

如果您唯一的要求是从Excel文件中提取数据,那么最好使用一个只能从文件本身读取数据的库,而不是在后台启动Excel进程。

它更快,更干净,更可testing。

我已经使用NPOI .xls文件(当然还有其他的),并且.xlsx文件有很多选项。 这个问题是关于创build一个文件,但任何build议的库,当然也可以读取文件。

唯一一次我使用COM自动化是与一个正在运行的Excel实例进行交互。

编辑(回复评论)

以下是将B列值作为string的示例:

using System; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var stream = new FileStream(@"c:\my_workbook.xls", FileMode.Open); var workbook = new HSSFWorkbook(stream); stream.Close(); var sheet = workbook.GetSheet("My Sheet Name"); var row_enumerator = sheet.GetRowEnumerator(); while (row_enumerator.MoveNext()) { var row = (Row)row_enumerator.Current; var cell = row.GetCell(1); // in Excel, indexes are 1-based; in NPOI the indexes are 0-based Console.WriteLine(cell.StringCellValue); } Console.ReadKey(); } } }