powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как подсчитать ширину объеденённых столбцов в Excel
3 сообщений из 3, страница 1 из 1
Как подсчитать ширину объеденённых столбцов в Excel
    #37491561
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо сделать в Excel ширину ячейки, как сумму объеденённых столбцов

loexcel.RANGE(.cells(1,1),.cells(1,50)).COLUMNWIDTH=1
loexcel.RANGE(.cells(1,1),.cells(1,50)).merge
Для примера
loexcel.cells(1,51).COLUMNWIDTH;
=loexcel.cells(1,1).COLUMNWIDTH+....+loexcel.cells(1,50).COLUMNWIDTH
Видно что ширина у объеденённой ячейки и 51-ой ячейки разная, надо вводить какой-то коэффициент..., а какой не знаю...
...
Рейтинг: 0 / 0
Как подсчитать ширину объеденённых столбцов в Excel
    #37491706
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема с установкой ширины столбцов Excel заключается в том, что ширина (ColumnWidth) устанавливается в символах. А фактическая ширина одного символа - есть понятие достаточно условное и приблизительное. Поэтому необходим итерационный цикл, чтобы корректировать ширину в символах, по возможности максимально близко приближаясь к ширине в пунктах (Width)

Другими словами сравнивать Вы должны значение Range.Width - это ширина в пунктах. При этом, имея в виду, что получить точность меньше чем 1 пункт - невозможно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
* Требуемая ширина столбца в пунктах
Local lnNeedWidth
lnNeedWidth =  100 

* Нужный столбец
Local loRange
loRange = loExcel.Range("A:A")

* Необходимо корректно "войти в цикл".
* Сделать первый "фиктивный шаг" присвоив текущее значение
newValue = loRange.ColumnWidth()

do while .T.
        * Задаю новую ширину в символах
        loRange.ColumnWidth(newValue)

        * Определяю полученную ширину в символах
        widthSymbols = loRange.ColumnWidth()

        * Определяю полученную ширину в пунктах
        widthPoints = loRange.width()

        * Вычисляю новое значение ширины в символах
        newValue = lnNeedWidth * widthSymbols / widthPoints

    * Цикл выполняется до тех пор, пока ширина в пунктах не приблизится к нужному значению
    * Равенство может получится разве что случайно, а точность менее чем  1  пункт невозможна! Зацикливается
    * В среднем, получается около  3  итераций цикла
    if abs(lnNeedWidth - widthPoints) <=  1 
        exit
    endif

enddo
...
Рейтинг: 0 / 0
Как подсчитать ширину объеденённых столбцов в Excel
    #37493747
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как подсчитать ширину объеденённых столбцов в Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]