• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

суммирование в excel при выгрузки из Lotus

k85

Lotus Team
11.10.2011
262
1
BIT
10
из Lotus необходимо выгрузить данные в excel
все в выгрузке работает, но при формировании Excel необходимо , чтобы числовые данные из определенных колонок суммировались
данные переношу так
Код:
        Call wsSetCurrentCell("A" & Cstr(IndexBase+LineCounter))
        Call wsCurrentCell(Doc.Поле(0))
        Call wsSetCurrentCell("B" & Cstr(IndexBase+LineCounter))
        Call wsCurrentCell(Doc.Поле2(0))

шаблон хранится в базе и по нему заполняются данные

это реально вообще, задать определенным колонкам суммирование?
 

savl

Lotus Team
28.10.2011
2 612
313
BIT
349
из Lotus необходимо выгрузить данные в excel
все в выгрузке работает, но при формировании Excel необходимо , чтобы числовые данные из определенных колонок суммировались
данные переношу так
Код:
        Call wsSetCurrentCell("A" & Cstr(IndexBase+LineCounter))
        Call wsCurrentCell(Doc.Поле(0))
        Call wsSetCurrentCell("B" & Cstr(IndexBase+LineCounter))
        Call wsCurrentCell(Doc.Поле2(0))

шаблон хранится в базе и по нему заполняются данные

это реально вообще, задать определенным колонкам суммирование?
Если хотите именно средствами Excel, то открываете Excel, заполняете лист тестовымми данными, включаете запись макроса, затем делаете суммирование.
Потом останавливаете запись и смотрите генерируемый код, который можно перенести на LS.
Альтернатива: Считать в LS самостоятельно, затем записывать в Excel.

У каждого подхода свой минус и плюс:
Если делать через Excel, то надо будет аккуратно просчитывать строки/колонки, чтобы правильно сложить, плюс же в том, что при изменении данных будет изменена и сумма.
Если делать на LS, то заполнение проще, надо просто знать куда положить результат, но минус в том, что не будет авторасчета при изменении данных.
 

k85

Lotus Team
11.10.2011
262
1
BIT
10
использую wsLib script, который был на просторах инета давно взят
добавляю все данные и потом Call wsCellSum("P")
Код:
Sub wsCellSum(colToSum As String) 'add a row and put the sum() formula there
    wsLastRowSum = wsLastRow + 1
    wsLastRowSumd= "=СУММ(" & colToSum & "2:" & colToSum & (wsLastRow) & ")"
End sub

wsLastRowSum последняя +1 , все верно
в wsLastRowSumd получаю "=СУММ(P2: P11)" - добавлю пробелы, а то смайл получается

если в excel вставить эту формулу , то все корректно считает.
не могу только понять , как в новую строку вставить эту формулу
 

savl

Lotus Team
28.10.2011
2 612
313
BIT
349
ак в новую строку вставить эту формулу

Думаю в ячейку надо формулу указать, в нужном диапазоне, либо результат это функции в ячейку.
Но насколько я понимаю это не будет считать автоматом после изменений пользователем.
 

k85

Lotus Team
11.10.2011
262
1
BIT
10
Код:
     wsLastRowSd= "=СУММ(" & colSum & "2:" & colSum & (wsLastRow) & ")"
    Call wsCell(wsCellStringLast,wsLastRowSd,wsCurrentCellFlags,wsCurrentFontSize,wsCurrentFontName,wsCurrentNumberFormat)

Function wsCellStringLast As Variant
    Call wsGetColString
    wsLastRowS = wsLastRow + 1
    wsCellStringLast = wsColString & LTrim(Str(wsLastRowS))
End Function

добавляется вконце столбца текст , а не сумма, если пробуешь менять число, то выделение срабатывает, но сумма все равно не показывается
=СУММ(K9:K15)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 961
611
BIT
309
всё делается, в т.ч., (он в домине уже есть штатно)
есть и обертки, даже типа отчетов со своим макроязыком и исходники разные (GitHub - jxlsteam/jxls: Java library for creating Excel reports using Excel templates)
завязывайте уже с КОМой
лет цать назад делал рапер (по просьбе) - хухуль вызовы переписывал на LS2J еще в старую либу (oprnxls по-моему - где-то здесь пробегало) было ощутимое ускорение по сравнению с КОМой
и самый простой метод (и быстрый) - тупо в CSV - оттуда хухелем с формулами/макросами (шаблон накидать такой),
 
Последнее редактирование:
  • Нравится
Реакции: k85

garrick

Lotus Team
26.10.2009
1 354
151
BIT
230
Код:
     wsLastRowSd= "=СУММ(" & colSum & "2:" & colSum & (wsLastRow) & ")"
    Call wsCell(wsCellStringLast,wsLastRowSd,wsCurrentCellFlags,wsCurrentFontSize,wsCurrentFontName,wsCurrentNumberFormat)

Function wsCellStringLast As Variant
    Call wsGetColString
    wsLastRowS = wsLastRow + 1
    wsCellStringLast = wsColString & LTrim(Str(wsLastRowS))
End Function

добавляется вконце столбца текст , а не сумма, если пробуешь менять число, то выделение срабатывает, но сумма все равно не показывается
=СУММ(K9:K15)
Нужно указать что тип ячейки ФОРМУЛА, а не просто строка.
 
  • Нравится
Реакции: k85

garrick

Lotus Team
26.10.2009
1 354
151
BIT
230
понятно, буду искать как указать
Ранее @savl уже давал рекомендации на этот счёт
Если хотите именно средствами Excel, то открываете Excel, заполняете лист тестовымми данными, включаете запись макроса, затем делаете суммирование.
Потом останавливаете запись и смотрите генерируемый код, который можно перенести на LS.

Только там в макросе VBA все константы обозначены переменными, в LotusScript это не пройдёт, числовые значения переменных можно подсмотреть в дебагере VBA редактора в Excel.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 961
611
BIT
309
Ранее @savl уже давал рекомендации на этот счёт


Только там в макросе VBA все константы обозначены переменными, в LotusScript это не пройдёт, числовые значения переменных можно подсмотреть в дебагере VBA редактора в Excel.
кмк здесь уже были либы с константами
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!