подскажите, как прочитать текст объединенной ячейки в табличном документе загруженном из Ексель Если ячейка одинарная то проблем нет но если попадается вертикально объединенная ячейка то она возвращает ""
нашел вот такой код
но Верх и Низ у этих ячеек равны
КолСтр = ТабДок.ВысотаТаблицы;
Для Сч = 1 по КолСтр Цикл
Попытка
ЗН= Число(ТабДок.Область("R" + Формат(Сч, "ЧГ=0") + "C" + Столбец).Текст);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось загрузить строку "+Строка(Сч);
Сообщение.Сообщить();
КонецПопытки;
КонецЦикла;
Показатьнашел вот такой код
Для Х = Область.Лево ПО Область.Право Цикл
Для У = Область.Верх ПО Область.Низ Цикл
Сообщить(Область.Текст);
Х = Х + Область.Право - Область.Лево;
КонецЦикла;
КонецЦикла;
но Верх и Низ у этих ячеек равны
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Может, там что-то вроде "R1C1:R3C1" (условно), а вы пытаетесь прочитать "R1C1" - соответственно, получаете пустую строку.
если попадается вертикально объединенная ячейка то она возвращает ""
Я бы попробовал сохранить прочитанный табличный документ в файл, потом открыть его в 1С и посмотреть - какой адрес у объединенной ячейки?
Может, там что-то вроде "R1C1:R3C1" (условно), а вы пытаетесь прочитать "R1C1" - соответственно, получаете пустую строку.
(1) У меня так получилось. Таблица еще один таб док, в которым вывожу значения объединенных ячеек в каждую ячейку.
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);
НачалоОбъединенияМассив = Новый Массив;
Для Сч = 0 По Колонки.Количество() Цикл
НачалоОбъединенияМассив.Добавить(1);
КонецЦикла;
Для Сч = 1 По ТабДок.ВысотаТаблицы Цикл
Для Колонка = 1 По Колонки.Количество() Цикл
ТекущийТекст = ТабДок.Область(Сч, Колонка, Сч, Колонка).Текст;
ОбъединенныйТекст = ТабДок.Область(НачалоОбъединенияМассив[Колонка], Колонка, Сч, Колонка).Текст;
Если ЗначениеЗаполнено(ТекущийТекст) И ТекущийТекст <> ОбъединенныйТекст Тогда
ТекстЯчейки = ТекущийТекст;
НачалоОбъединенияМассив[Колонка] = Сч;
Иначе
ТекстЯчейки = ОбъединенныйТекст;
КонецЕсли;
Таблица.Область(Сч + 1, Колонка, Сч + 1, Колонка).Текст = ТекстЯчейки;
КонецЦикла;
КонецЦикла;
Показать
зн = ExcelЛист.Cells(стр,кол).Value;
// разделяем объединенные ячейки и распределяем между ними их числовое содержимое
Если зн <> Неопределено и ТипЗнч(зн) = Тип("Число") и ExcelЛист.Cells(стр,кол).MergeCells = Истина Тогда
// количество строк и колонок выделенной области
квоСтр = ExcelЛист.Cells(стр,кол).MergeArea.Rows.Count;
квоКол = ExcelЛист.Cells(стр,кол).MergeArea.Columns.Count;
// количество ячеек выделенной области
квоЯчеек = квоСтр*квоКол;
// координаты начальной ячейки области
начСтр = ExcelЛист.Cells(стр,кол).MergeArea.Row;
начКол = ExcelЛист.Cells(стр,кол).MergeArea.Column;
// координаты конечной ячейки области
конСтр = начСтр+квоСтр-1;
конКол = начКол+квоКол-1;
// разделяем ячейки
ExcelЛист.Cells(стр,кол).UnMerge();
// распределяем между ячейками числовое содержимое
Для стрМ = 0 по квоСтр-1 Цикл
Для колМ = 0 по квоКол-1 Цикл
ячЗн = Окр(зн/квоЯчеек,0);
ExcelЛист.Cells(начСтр+стрМ,начКол+колМ).Value = ячЗн;
зн = зн-ячЗн;
квоЯчеек = квоЯчеек-1;
КонецЦикла;
КонецЦикла;
// заново считываем значение реквизита строки
зн = ExcelЛист.Cells(стр,кол).Value;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот