Ячейка для чтения Excel пуста?

#c# #excel

Вопрос:

Эй, ребята, моя проблема в том, что когда я читаю ячейку, а в ячейке ничего нет, у меня ошибка, как я могу это проверить?

 var aExcel = sh.Cells[26, 2].Value.ToString();  double test = Convert.ToDouble(aExcel);  

и еще один вопрос, как я могу прочитать больше ячеек ? потому что мой код такой длинный …

 var aExcel = sh.Cells[26, 2].Value.ToString(); var bExcel = sh.Cells[27, 2].Value.ToString(); var cExcel = sh.Cells[28, 2].Value.ToString(); var dExcel = sh.Cells[29, 2].Value.ToString(); var eExcel = sh.Cells[30, 2].Value.ToString(); var fExcel = sh.Cells[31, 2].Value.ToString(); double test1 = Convert.ToDouble(aExcel); double test2 = Convert.ToDouble(bExcel); double test3 = Convert.ToDouble(cExcel); double test4 = Convert.ToDouble(dExcel); double test5 = Convert.ToDouble(aExcel);  

Комментарии:

1. Я использую Microsoft. Офис. Взаимодействие. Превосходить;

2. Я использую Microsoft. Офис. Взаимодействие. Excel; — вы можете избежать этого, используя что-то вроде EPPlus

3. Цикл кажется подходящим с массивом для сбора данных в

4. у меня есть ошибка — всегда, всегда указывайте точный текст ошибки. Это самая полезная отладочная информация, которую вы можете нам предоставить. Без этого сказать «произошла ошибка» — все равно что позвонить своему механику и сказать: «моя машина шумит».

5. Это отключение через строку может быть ненадежным. Используйте отладчик для проверки типов данных, которые у вас уже есть sh.Cells[26, 2] — например, поместите sh.Cells[26, 2].GetType() в окно «Немедленно» — если это уже двойной, то перебирать строку неразумно; просто выполните прямое приведение

Ответ №1:

для вашего второго вопроса вот пример кода:

 Listlt;Doublegt; datas = new Listlt;Doublegt;();  int excelStartRow = 26; int excelEndRow = 21;   for (int i = excelStartRow; i lt;= excelEndRow; i  ) {  var aExcel = sh.Cells[i, 2];  if (aExcel != null)  {  double value = Convert.ToDouble(aExcel.Value.ToString());  datas.Add(value);  }  }  

Комментарии:

1. вот ты кто, чувак ! это идеально, но не могли бы вы привести мне пример, как поместить данные из одного списка в текстовое поле ?

2. может быть, поэтому textbox.text = данные[2]. toString();?

3. ладно, у меня есть это для тебя, чувак !!!!! так много 🙂

4. хорошо, у меня проблема, когда я читаю 3 ячейки, а одна пуста, я возвращаюсь к основному коду, почему ?

5. я прочитал 3 ячейки, в одной из которых 1:0,33 2:0,77 3:(Ничего)

Ответ №2:

Вы можете проверить вот так:

 if(sh.Cells[26, 2] != null) { //do something }  

код:

 double test; var aExcel = sh.Cells[26, 2]; if(aExcel != null){ test = Convert.ToDouble(aExcel.Value.ToString()); }    

Комментарии:

1. для вашего второго вопроса вы можете использовать цикл for и добавить свои значения в массив или список

2. это здорово, что ты 🙂

3. гуркан, у вас есть простой пример кода ?