是否有免费或开源的库可以直接从c#程序中读取Excel文件(.xls) ?
它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。到目前为止,我一直在使用Excel的Export to Unicode文本功能,并解析生成的(以制表符分隔的)文件,但我想消除手动步骤。
是否有免费或开源的库可以直接从c#程序中读取Excel文件(.xls) ?
它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。到目前为止,我一直在使用Excel的Export to Unicode文本功能,并解析生成的(以制表符分隔的)文件,但我想消除手动步骤。
当前回答
如果只是表格数据。我推荐Marcos Melli的文件数据助手,可以在这里下载。
其他回答
var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
这是我常用的。这有点不同,因为我通常在表的编辑处使用AsEnumerable():
var data = ds.Tables["anyNameHere"].AsEnumerable();
因为这让我使用LINQ从字段中搜索和构建结构。
var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
new MyContact
{
firstName= x.Field<string>("First Name"),
lastName = x.Field<string>("Last Name"),
phoneNumber =x.Field<string>("Phone Number"),
});
如果只是包含在Excel文件中的简单数据,则可以通过ADO.NET读取数据。请看下面列出的连接字符串:
http://www.connectionstrings.com/?carrier=excel2007 或 http://www.connectionstrings.com/?carrier=excel
对
更新:然后你可以读取工作表通过选择*从[Sheet1$]
我推荐FileHelpers库,这是一个免费的,易于使用的。net库,用于从EXCEL中导入/导出数据,文件,字符串或流中的固定长度或分隔记录+更多。
Excel数据链接文档部分 http://filehelpers.sourceforge.net/example_exceldatalink.html
Excel数据阅读器是去的方式!
它是开源的,在http://exceldatareader.codeplex.com/上,正在积极开发。
我们使用它来阅读表格(有时不是那么表格)工作表已经有几年了(在一个金融应用程序中)。
可以从人类可读的表中读取单元测试数据。
只需避免尝试返回DateTime的功能,因为对于Excel, DateTime只是双位数。
不久前,我在c#中从Excel文件中读取了大量数据,我们使用了两种方法:
COM API,在这里您可以直接访问Excel的对象并通过方法和属性操作它们 允许像使用数据库一样使用Excel的ODBC驱动程序。
后一种方法要快得多:通过COM读取一个有20列和200行的大表需要30秒,通过ODBC只需半秒。所以,如果你需要的只是数据,我建议使用数据库方法。
欢呼,
Carl