【问题标题】:How to use LinqToExcel to get cell values without header如何使用 LinqToExcel 获取没有标题的单元格值
【发布时间】:2012-12-04 20:26:10
【问题描述】:

我有一个这样的excel...

|------------ 表格 ---------------|
|------------------------------------------------|
| 姓名 ------- 姓氏----|
|鲍勃 ---------- 价值 ------------|
| 年龄 -----------------------------|
| 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();
}

【问题讨论】:

  • 好吧,我想问题是;您是否在同一张纸上有很多记录,或者您只需要在每张纸上检索一条?
  • 嗨,我有大约 40 条记录。

标签: c# .net linq


【解决方案1】:

根据我的理解,你的 excel 文件应该是这样的

我实现了一些代码来读取这条记录,但我认为它应该不止一个。 如您所见,我正在迭代行集并避免假设它们是标题的奇数行。

我希望这对你有用!

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++;
            }
        }
    }
}

【讨论】:

  • 嗨,你好,但我不能假设一行是标题,另一行是值。实际上,我的 excel 就像一个 Web 表单,字段排列得像一个表格。我希望我可以在此处附上 excel =)。它就像:第一行标题一个字段***第二行值1个字段***第三行标题2个字段2个字段的第4行值第5行标题* **第6行值***第7行值第8行值***第9行标题1字段第10行值1字段..等等
  • 好的,现在我明白了,你能不能像我一样附上截图,它会比你的桌子更清晰。
  • 我无法添加 img,显然“没有声誉”。
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 2018-10-01
  • 1970-01-01
  • 2011-08-02
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
相关资源
最近更新 更多