• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

k85

Lotus Team
11.10.2011
260
1
BIT
0
из 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 597
310
BIT
179
из 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
260
1
BIT
0
использую 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 597
310
BIT
179
ак в новую строку вставить эту формулу

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

k85

Lotus Team
11.10.2011
260
1
BIT
0
Код:
     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 941
609
BIT
214
всё делается, в т.ч., (он в домине уже есть штатно)
есть и обертки, даже типа отчетов со своим макроязыком и исходники разные (GitHub - jxlsteam/jxls: Java library for creating Excel reports using Excel templates)
завязывайте уже с КОМой
лет цать назад делал рапер (по просьбе) - хухуль вызовы переписывал на LS2J еще в старую либу (oprnxls по-моему - где-то здесь пробегало) было ощутимое ускорение по сравнению с КОМой
и самый простой метод (и быстрый) - тупо в CSV - оттуда хухелем с формулами/макросами (шаблон накидать такой),
 
Последнее редактирование:
  • Нравится
Реакции: k85

garrick

Lotus Team
26.10.2009
1 351
151
BIT
187
Код:
     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 351
151
BIT
187
понятно, буду искать как указать
Ранее @savl уже давал рекомендации на этот счёт
Если хотите именно средствами Excel, то открываете Excel, заполняете лист тестовымми данными, включаете запись макроса, затем делаете суммирование.
Потом останавливаете запись и смотрите генерируемый код, который можно перенести на LS.

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

lmike

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


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

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