从C#读取Excel文件
是否有免费或开放源代码库直接从C#程序读取Excel文件(.xls)?
它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。 到目前为止,我一直在使用导出到Excel的Unicode文本函数,并解析生成的(制表符分隔)文件,但我想消除手动步骤。
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
-Ryan
更新:然后你可以通过像select * from [Sheet1$]
这样的东西来阅读工作表。
ADO.NET方法既快速又简单,但它有一些你应该注意的怪癖,特别是关于如何处理DataType。
这篇优秀的文章将帮助您避免一些常见的陷阱:http://blog.lab49.com/archives/196
链接地址: http://www.djcxy.com/p/35683.html上一篇: Reading Excel files from C#
下一篇: EXCEL.EXE process closes immeditately when using COM Interop