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

  • Автор темы Автор темы k85
  • Дата начала Дата начала
  • Теги Теги
    excel

k85

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

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

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

У каждого подхода свой минус и плюс:
Если делать через Excel, то надо будет аккуратно просчитывать строки/колонки, чтобы правильно сложить, плюс же в том, что при изменении данных будет изменена и сумма.
Если делать на LS, то заполнение проще, надо просто знать куда положить результат, но минус в том, что не будет авторасчета при изменении данных.
 
использую 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 вставить эту формулу , то все корректно считает.
не могу только понять , как в новую строку вставить эту формулу
 
ак в новую строку вставить эту формулу

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

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


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

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