如何在c#中使用http://code.google.com/p/linqtoexcel/枚举excel文件

时间:2012-12-12 17:09:19

标签: c# linq-to-excel

基本上我需要的是在IEnumerable<IEnumerable<string>> contents;这样的结构中复制的excel文件(非空白单元格)的内容
第一个IEnumerable用于行,第二个用于列。
我已经开始工作的是使用以下方式加载文件:

var excel = new ExcelQueryFactory("file.xls");

先谢谢你们。

4 个答案:

答案 0 :(得分:1)

答案是:

var excel = new ExcelQueryFactory("file.xls");
var result = excel.WorksheetNoHeader().ToList().Select(x => x.Select(y => y.ToString()).AsEnumerable());

感谢您提供的帮助。

答案 1 :(得分:0)

你可以尝试这样的事情,你可以自己编写额外的逻辑来引入字段数据而不是字符串.Empty用文件路径位置替换文件路径

您还可以使用Linq to Excel开源项目(code.google.com/.../linqtoexcel)轻松从Excel获取数据。它为您处理OleDB连接,您可以使用where子句。您所要做的就是创建一个具有与excel列名对应的属性的类。这是一个例子:

IExcelRepository<Client> repo = new ExcelRepository<Client>(@"C:\file.xls");

var largeClients = from c in repo.Worksheet

                  where c.Employees > 200

                  select c;

foreach (Client client in largeClients)
{
   Console.WriteLine(client.ClientName);
}

答案 2 :(得分:0)

首先将数据放入类似于数据表的内容,然后使用as Enumarable进行选择?

var x = _xlData.Tables[0].Rows
           .Cast<DataRow>()
           .Where(row => !row.ItemArray.All(field => field is System.DBNull ||   
                                            string.Compare((field as string).Trim(), 
                                            string.Empty) == 0))
           .AsEnumerable();

答案 3 :(得分:0)

根据文档,解决方案应该与以下内容一样简单:

var excel = new ExcelQueryFactory("file.xls");
var result = excel.Worksheet()
                  .Select(x => x.Select(y => y.ToString()));