#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. гуркан, у вас есть простой пример кода ?