从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