Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
satkakm
0 / 0 / 0
Регистрация: 14.09.2016
Сообщений: 4
#1

Пустой cellRange.Value при парсинге Excel - C#/.NET 3.x

23.10.2017, 20:12. Просмотров 186. Ответов 8

Здравствуйте!
Пишу парсер Excel. Написал шаблоны уже для множества файлов, но очередном наткнулся на проблему. Ячейки, которые содержат текст при чтении через Microsoft.Office.Interop.Excel получаются пустыми. Чтение выполняется так
C#
1
2
3
cellRange = (Excel.Range)excelworksheet.Cells[jj, ColDiam];
if (cellRange.Value != null)
    temp = cellRange.Value.ToString().Trim();
В итоге у половины ячеек с текстом получается cellRange.Value == null. Ну и на всякий случай проверил, что cellRange.Value2 тоже null.
В более чем 50 таких шаблонов все было хорошо. Кто-нибудь сталкивался с такой проблемой? Почему так может быть?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2017, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .NET 3.x Пустой cellRange.Value при парсинге Excel (C#):

Ошибка при парсинге IP - C#
Какая-то странная ошибка возникает при парсинге строки Ip. Сама строка берётся из MaskedTextBox. Адрес 127.000.000.001 парсится нормально,...

Исключение при парсинге JArray - C#
Здравствуйте! Имеется JSON строка следующего типа: { "employees": } Пытаюсь ее парсить при помощи JArray.Parse(string); но...

Out of memory при парсинге с webBrowser - C#
Друзья, посоветуйте почему выдает out of memory??? Есть множество ссылок на гугл.финанс с которых надо спарсить инфу, я делаю так: Я...

При парсинге с помощью XDocument данные не выводятся - C#
Добрый день, Есть хмл файл примерно с такой структурой <Шапка xmlns="kk.ru"> <Сотрудник"> ...

Избавление от &_shy_; при парсинге страницы - C#
Доброго времени суток. Пытаюсь спарсить страницу вот таким вот кодом WebClient wClient = new WebClient(); wClient.Encoding =...

Слетела кодировка при парсинге html-страницы - C#
Здравствуйте! Начал писать программу которая парсит сайт. В заголовке html-страницы указана следующая кодировка: <meta...

8
Pavel55
791 / 252 / 76
Регистрация: 27.10.2006
Сообщений: 590
24.10.2017, 10:46 #2
А если так?

C#
1
cellRange = (Excel.Range)excelworksheet.Cells[jj, ColDiam].Text; //добавлен .Text в конце
или так

C#
1
cellRange = (Excel.Range)excelworksheet.Cells[jj, ColDiam].Value; //добавлен .Value в конце
а какой у вас тип переменной cellRange ?

Может у вас эти ячейки объедены? Тогда нужно брать значения из верхней левой ячейки.

А кусок файла можно посмотреть?

P.S. А может у вас в переменной jj - значения 100, а вы смотрите на 10 строку, или же значение ColDiam - 50, а вы смотрите на 3 столбец... тут файл нужно смотреть
0
Skorp24
33 / 33 / 15
Регистрация: 15.06.2009
Сообщений: 286
24.10.2017, 10:53 #3
Покажите файл Excel.
0
satkakm
0 / 0 / 0
Регистрация: 14.09.2016
Сообщений: 4
24.10.2017, 17:13  [ТС] #4
Pavel55, значения переменных при пошаговой отладке отследил. Там все верно. Если jj равно 100 то и проверяю в строке 100 в Excel. Большое количество файлов уже парсятся по похожим шаблонам.
Тип переменной cellRange - Excel.Range.
Дополнения к строке не получится прописать, т.к. там просто нет таких свойств.
Пустой cellRange.Value при парсинге Excel
А после приведения к типу Range и присвоения переменной эти свойства, естественно, появляются, но их значения не возможно получить, т.к. cellRange == null, хотя значения в файле в этой ячейке есть. Может есть еще какой-либо способ получить значение ячейки?
0
Skorp24
33 / 33 / 15
Регистрация: 15.06.2009
Сообщений: 286
24.10.2017, 17:27 #5
Цитата Сообщение от satkakm Посмотреть сообщение
Может есть еще какой-либо способ получить значение ячейки?
Попробуйте так:

C#
1
temp = excelworksheet.Range("A1").Value;
0
satkakm
0 / 0 / 0
Регистрация: 14.09.2016
Сообщений: 4
24.10.2017, 17:54  [ТС] #6
Skorp24, я в замешательстве. Так как вы говорите сделать, оно работает. Правда немного нужно подкорректировать.
C#
1
temp = excelworksheet.Range["F2387"].Value.ToString();
А вот если jj = 2387 и ColDiam = 6, то cellRange.Value в этой ячейке равен null. Можно, конечно городить словарь с буквами и их индексами и добавлять к букве по индексу номер строки, но это будет очень не красиво и увеличит время обработки файла. Что-нибудь можно еще посмотреть/проверить?
0
Skorp24
33 / 33 / 15
Регистрация: 15.06.2009
Сообщений: 286
25.10.2017, 09:48 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
satkakm, вот и моя темка пригодилась.
Excel: преобразование номера столбцов в буквенные символы и наоборот

Добавлено через 16 минут
У меня кстати тоже были в прошлом какие-то проблемы с Cells, поэтому я от него отказался в пользу Range. Даже при том, что нужно делать дополнительную работу по преобразованию индексов в буквы. Но скорость, с которой работает преобразование, меня устраивает.
1
Pavel55
791 / 252 / 76
Регистрация: 27.10.2006
Сообщений: 590
25.10.2017, 13:24 #8
Цитата Сообщение от satkakm Посмотреть сообщение
А вот если jj = 2387 и ColDiam = 6, то cellRange.Value в этой ячейке равен null.
Дайте посмотреть файл с этой ячейкой, а то странно получается Range["F2387"].Value.ToString(); а jj = 2387 и ColDiam = 6 не срабатывает.

Не видя вашего файла мы долго гадать будем
0
satkakm
0 / 0 / 0
Регистрация: 14.09.2016
Сообщений: 4
25.10.2017, 13:44  [ТС] #9
Pavel55, файл показать не могу, т.к. проект коммерческий и все остальное вытекающее из этого.
В конкретно этом шаблоне начал делать по предложенному Skorp24 способу. В следующих продолжу по старому.

Skorp24, это довольно элегантные методы. Спасибо вам за помощь)
0
25.10.2017, 13:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2017, 13:44
Привет! Вот еще темы с ответами:

Выполнение условия в парсинге - C#
офф топ решил сам

При поиске пустой ячейки Excel и последующей записи в неё переменной, выскакивает ошибка - Delphi
Здравствуйте уважаемые форумчане. В процессе написания программы столкнулся с проблемой. При поиске пустой ячейки и последующей записи в...

Блокируют при парсинге - PHP Сети
Привет. Пытаюсь парсить один сайт. После выкачки пары страниц происходит блокировка, как я думаю, по ip, т.к. потом и с браузера своего...

Ошибка при парсинге - Python
Здравствуйте. Пытаюсь написать простой парсер, но возникла непонятная ошибка Например, страница...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.