Невозможно выполнить привязку во время выполнения для исключения с нулевой ссылкой - PullRequest
7 голосов
/ 09 февраля 2011

Я пытаюсь найти размеры таблицы Excel с помощью C #, найдя первую пустую ячейку в первом столбце (который состоит из дат) и строку заголовка.

Вот код, который я сейчас использую:

public static void findingTableBounds()
    {
        string dateCol = "";
        ArrayList dateColumn = new ArrayList();
        ArrayList numberOfColumns = new ArrayList();

        for (int column = 1; column < currentRow; column++)
        {
            dateCol = ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2.ToString();
            if (dateCol != "")
            {
                dateColumn.Add(dateCol);
                currentRow++;
                totalRow++;
                Console.WriteLine("Total Row: {0}", totalRow);            
            }
            else
            {
                Console.WriteLine("Total Row: {0}", totalRow);
                currentRow = 2;
            }
        }

** Примечание: для этого метода есть закрывающая скобка, я ее не включил, потому что есть еще один цикл for, который делает то же самое, что и код выше, но только для количества столбцов.

Ошибка возникает в "dateCol = ((Excel.Range) workSheet.Cells [currentRow, 1]). Value2.ToString ();" Я почти уверен, что это происходит, потому что я пытаюсь присвоить нулевое значение (ячейка) dateCol (строка), когда строка не имеет значения NULL. К сожалению, я не уверен, как решить проблему.

Ответы [ 2 ]

9 голосов
/ 09 февраля 2011

Применение нулевого значения к строке выполнимо, но если ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2 равно нулю, то у него нет функции ToString (), которая не является функцией, поэтому попытка ее выполнения не работает.Это говорит, что это за тип исключения?потому что может быть большая проблема ...

1 голос
/ 05 декабря 2016

В отношении вышеприведенного поста (у меня недостаточно репутации, чтобы комментировать)

Ради помощи другим потерянным душам я поднял этот пост и просто добавлю:

if (((Excel.Range) workSheet.Cells [currentRow, 1]). Value2! = Null) {...}.
- Сильвен 16 февраля '15 в 21:07

У меня была проблема и я использовал ее, но обнаружил, что, по крайней мере, в моем случае я изменил это на:

if (excelWorksheet.Cells[row, column].Value2 != null)
{
  return ((Excel.Range)excelWorksheet.Cells[row, column]).Value2.ToString();
}
return "No data";

, который работал, по крайней мере, для моего конкретного случая. Наличие части Excel.Range в случае ошибок, созданных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...