Сервис.ВысотаСтрокиТаблицы() выдает 0

Автор alyuev, 12 апреля 2024, 12:15

« назад - далее »

alyuev

По следам решения выгрузки таблиц MXL в XLS.
Хотел определить высоту строк, у которых в свойствах стоит АвтоВысота. Т.к. Эксель не выставляет свойство высоты строки как положено. Остается только одна строка.

FormEx загружен 191.

Вот пробовал такой код.

Таб.Открыть(ИмяФайла);
МенеджерТабл = СоздатьОбъект("МенеджерТабличногоДокумента");
МенеджерТабл.УстановитьТаблицу(Таб,);
Для инд = 1 по Таб.ВысотаТаблицы() Цикл
	ОблМен=МенеджерТабл.Область(инд);
	ВысотаСтрМен=ОблМен.ВысотаСтрокиРасш();
	Обл=Таб.Область(инд);
	ВысотаСтр=Обл.ВысотаСтроки();
	ММ=Сервис.ВысотаСтрокиТаблицы(Таб,инд,1);//мм
	Пикс=Сервис.ВысотаСтрокиТаблицы(Таб,инд,2);//пикс
	Юнит=Сервис.ВысотаСтрокиТаблицы(Таб,инд,3);//юнит

	Сообщить(""+инд+" ВысотаСтр="+ВысотаСтр+" ВысотаСтрМен="+ВысотаСтрМен+" ММ="+ММ+" Пикс="+Пикс+" Юнит="+Юнит);
КонецЦикла;

Ответ в таком виде:

28 ВысотаСтр=23 ВысотаСтрМен=23 ММ=0 Пикс=0 Юнит=0
29 ВысотаСтр=0 ВысотаСтрМен=0 ММ=0 Пикс=0 Юнит=0 - это для строк с автовысотой

Как видно стандартный метод, как и расширенный метод компоненты TableDoc, возвращают высоту = 0 для строк с автовысотой.

Но вопрос - почему Formex вообще все параметры нулевые вернул?

alyuev

Отвечаю сам себе. Читать внимательнее нужно описание....

"Метод работает только для таблиц, которые уже выведены на экран методом Показать()."

А я Показать() использовал после!


Djelf

Это все работает через ж* и по разному для разных операционных систем.
Пытался приструнить, когда Йоксель для импорта 95го формата патчил, не понятно как это победить.
Все, все и все, и MSOffice и LibreOffice считают не правильно, когда есть автовысота.
Как победить без понятия...
Но 0 это и есть (вроде, не помю уже) автовысота, так уж сложилось.

alyuev

Да. Сделал так.
Пробегаюсь по строкам таблицы. Определяю была ли установлена Автовысота, и если да, то принудительно ставлю ВысотаСтроки() в новое значение = Пикс/Коэф. Коэф пока подобрал как 1.25.