【问题标题】:Finding table boundaries in Excel using C#使用 C# 在 Excel 中查找表格边界
【发布时间】:2011-02-18 04:15:03
【问题描述】:

我正在尝试用 C# 创建一个程序,该程序读取 Excel 文件,将信息存储在内存中,然后能够对该信息执行计算。

现在,虽然我正在硬编码存在多少行和列,但我可以读取信息。问题是我可能会得到一个由 2 x 2 表和另一个 500 x 300 表组成的 Excel 表。我正在尝试创建一种方法,通过在“日期”列和标题列中查找第一个 NULL 单元格来找出表的边界。

我发现了一些类似于 Convert.ToString((object)dateCol) == "" 的代码来尝试查找第一个 NULL 单元格。不幸的是(在 if 语句中)那段代码似乎针对所有单元格,无论它们是否为 NULL。如果我尝试进行直接比较(如果(dateCol == null)),也会出现同样的问题。

谢谢, 杰西

【问题讨论】:

  • 您使用什么工具包/库来读取和处理 Excel 文件?您的问题中没有足够的信息知道该建议什么。如果您使用互操作,则只需在工作表对象上使用 .Rows.Count/.Columns.Count。

标签: c# excel


【解决方案1】:

我让它工作了。这是供好奇的人使用的代码。

public static void findingTableBounds()
    {
        for (int column = 1; column < currentRow; column++)
        {
            double? dateCol;
            dateCol = ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2;
            if (dateCol == null)
            {
                Console.WriteLine("Total Row: {0}", totalRow);
                currentRow = 2;           
            }
            else
            {
                currentRow++;
                totalRow++;
            }
        }


        for (int row = 1; row < currentCol; row++)
        {
            double? headerRow;
            headerRow = ((Excel.Range)workSheet.Cells[1, currentCol]).Value2;
            if (headerRow == null)
            {
                Console.WriteLine("Total Column: {0}", totalCol);
                currentCol = 2;
            }
            else
            {
                currentCol++;
                totalCol++;
            }
        }
    }

注意 我将 currentRow 和 currentCol 设为 2,以便在找到尺寸后就可以开始从表中读取值。并不完全需要这样做,您可以轻松使用其他变量,但我决定稍后使用这些变量。

更新 在其他程序员的帮助下,我得到了一些用于 VB 的代码,它可以自动找到表格的最后一行。代码如下:

Dim totalRow As Integer

totalRow = Range("A1").End(xlDown).Row

看到 VB 中如何为此提供方法,这让我觉得 C# 中可能有方法可以做同样的事情......我只是不知道它们是什么。无论如何,“End”方法也可用于查找左、上、右边界,Row 方法似乎提取了 excel 中光标所在的当前行(这里光标跳转到最后一行,因为End 方法)

杰西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多