如何使用LinqToExcel获取没有标题的单元格值

时间:2012-12-04 20:26:10

标签: c# .net linq

我有这样的优秀......

| ------------ 表格 --------------- |
| ------------------------------------ |
| 姓名 ------- 姓氏 ---- |
|鲍勃----------价值----------- |
| 年龄 ----------------------------- |
| 30 ------------------------------- |
| ---------- 地址 ------------- |
| ------------------------------------ |
| 街道 ------- 邮政编码 - |
|价值----------价值--------- |

..等等,就像登记表一样, 正如你可以看到我需要获得的值,是在下一行(标题下)。

如何使用LinqToExcel.dll执行此操作。 如果我在工作表中有一个CheckBox,我如何获得所选值(已选中或未选中)。

我的代码(c#.net)

var rows = from c in excel.WorksheetNoHeader(sheetName)
           select c;

foreach (var item in rows)
{
   string aux = item[0].Value.ToString();
}

1 个答案:

答案 0 :(得分:0)

我理解你的excel文件看起来应该是这样的

enter image description here

我实现了一些代码来读取这条记录,但我认为它不仅仅适用于一条记录。 正如你所看到的,我正在迭代到行集并避免奇数行,假设它们是标题。

我希望这适合你!

namespace Demo.Stackoverflow
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using LinqToExcel;

    public class Person
    {
        public string Name { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            LoadExcel();
            Console.ReadLine();
        }

        private static void LoadExcel()
        {
            var directorio = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Book.xls");
            var book = new ExcelQueryFactory(directorio);

            var rows = from c in book.WorksheetNoHeader()
                       select c;
            List<Person> people = new List<Person>();

            int i = 1;
            foreach (var row in rows)
            {
                if (i % 2 == 0)
                {
                    if (people.Count != 0 && people.Last().Age == 0)
                    {
                        people.Last().Age = Convert.ToInt32(row[0].Value.ToString());
                    }
                    else
                    {
                        Person per = new Person()
                        {
                            Name = row[0].Value.ToString(),
                            LastName = row[1].Value.ToString()
                        };
                        people.Add(per);
                    }
                }
                i++;
            }
        }
    }
}