Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как подсчитать ширину объеденённых столбцов в Excel / 3 сообщений из 3, страница 1 из 1
21.10.2011, 05:58
    #37491561
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подсчитать ширину объеденённых столбцов в Excel
Надо сделать в 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
21.10.2011, 10:07
    #37491706
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подсчитать ширину объеденённых столбцов в Excel
Проблема с установкой ширины столбцов 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
22.10.2011, 18:31
    #37493747
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как подсчитать ширину объеденённых столбцов в Excel
ВладимирМ,

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


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