29 ноября, воскресенье 13:45
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Генерация отчетов на "Windows Scripting Host" (ANTscript)

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Генерация отчетов на "Windows Scripting Host" (ANTscript)

    Здравствуйте коллеги.
    Недавно пришлось столкнуться с вопросом вывода отчетов в Excel/Word из Диасофта. Вариант с html оказался очень муторным. Наткнулся на тему с описанием варианта на "Windows Scripting Host" при помощи ANTscript (http://bankir.ru/dom/threads/86836-%...=1#post2455220), но все ссылки на исходники там уже мертвые, как и у первоисточника. Если еще остались счастливые обладатели данной технологии, поделитесь пожалуйста. А может с тех пор Диасофт скакнул далеко вперед и появились другие, более простые решения?

  • #2
    antscrc.rar

    antscrc.rar
    Последний раз редактировалось Alexey; 23.03.2015, 18:05.

    Комментарий


    • #3
      Спасибо, очень выручили!

      Комментарий


      • #4
        Я пользуюсь вариантом из обсуждения этой темы: http://bankir.ru/dom/threads/113157-...B8%D1%82%D0%B0

        "Хочу поделиться своей утилиткой, конвертирующей в excel тпр-ные отчеты.
        Принцип работы - файл шаблона .xls + файл с данными .tpr
        Суть та же, что при слиянии wrd отчетов с файлом слияния.

        Поддерживается (если ничего не пропустил) все форматирование, заданное в исходном xls шаблоне.
        Поддерживается работа с множеством листов, внедренные рисунки, высота строк.
        Многосекционность тоже должна поддерживаться, так как экспорт происходит после окончания формирования tpr.

        Минус - не понимает xlsx файлов, соответственно максимальное кол-во строк вывода ограничено 65 тыс.

        В архив добавил инструкцию по настройке отчета.TprToExcel 2.2.rar"




        Мне нравится в этом способе, что заранее можно сделать Excel с любым внешним видом, разметка, любое количество листов, цвета ячеек и тд

        Комментарий


        • #5
          Сообщение от Alexey Посмотреть сообщение
          [ATTACH]50305[/ATTACH]
          Если не сложно, можете еще скинуть пример .tpr отчета?
          Вложения

          Комментарий


          • #6
            zbc.rar

            zbc.rar

            Комментарий


            • #7
              Сообщение от Alexey Посмотреть сообщение
              [ATTACH]50328[/ATTACH]
              Еще раз спасибо! теперь хоть с отчетами особых проблем не будет)

              Комментарий


              • #8
                А я бы разгрузил VBS и делал бы:

                #IF ("@Kategory@"<> "Бабки" and "@Kategory@"<> "Дедки") then
                .Cells (cid,1).Value = "@Fio@"
                .Cells (cid,2).Value = @Salary@
                .Cells (cid,3).Value = @Child@
                #else
                .Cells (cid,1).Value = "@Fio@"
                .Cells (cid,2).Value = @Salary1@
                #endif
                Может синтаксис неправильный, конечно, но суть одна

                Комментарий


                • #9
                  Немного полезностей

                  1.
                  Если Word размечен букмарками, то мы используем следующий код, который правит всякие "косяки" от сумм прописью.
                  sub make_bookmark(doc, book, val)
                  if doc.Bookmarks.Exists(book) = True then
                  val = Replace(val, "рублей", "рублей РФ")
                  val = Replace(val, "рубля" , "рубля РФ")
                  val = Replace(val, "рубль" , "рубль РФ")
                  val = Replace(val, "дней ноль", "дней")
                  val = Replace(val, "день ноль", "день")
                  val = Replace(val, "дня ноль", "дня")
                  val = Replace(val, "одна сотых", "одна сотая")
                  val = Replace(val, "один сотая", "одна сотая")
                  val = Replace(val, "один сотая", "одна сотая")
                  val = Replace(val, "один тысячная", "одна тысячная")
                  val = Replace(val, "один тысячная", "одна тысячная")
                  val = Replace(val, "два тысячных", "две тысячных")
                  val = Replace(val, "два тысячных", "две тысячных")
                  val = Replace(val, "один целых", "одна целая")
                  val = Replace(val, "один целых", "одна целая")
                  doc.Bookmarks(book).Range.Text = trim(val)
                  end if
                  end sub
                  И вызов
                  call make_bookmark(objDoc, "ЗаемщикПаспорт", "@ClientPassport@ Выдан @ClientPassportWho@ Дата выдачи @ClientPassportDate@")
                  2. Формирование данных, например sms по шаблону с использованием "шаблонизатора" (ха-ха-ха).

                  sub makeMessage(tmplTxt, itemValues, fileName)
                  value_keys = itemValues.Keys
                  for j = 0 to itemValues.Count - 1
                  tmplTxt = Replace(tmplTxt, value_keys(j), itemValues.Item(value_keys(j)))
                  next
                  Set ts2 = fso.CreateTextFile(fName, True)
                  ts2.Write tmplTxt
                  ts2.Close
                  Set ts2 = Nothing
                  end sub
                  На входе:
                  tmplTxt - текст шаблона
                  itemValues - данные по клиенту
                  filename - имя файла на выходе

                  При этом текст сообщения берётся из шаблона
                  Set ts = fso.OpenTextFile("@TmplPath@\@TmplName@", ForReading)
                  messageTxt = ts.ReadAll
                  Данные по клиенту приходят так:

                  Set contracts = CreateObject("Scripting.Dictionary")
                  $@ContractID@
                  Set info = CreateObject("Scripting.Dictionary")
                  $T
                  info.add "@ParamName@", replace("@ParamValue@"," / ",vbcrlf)
                  $
                  contracts.add @ContractID@, info
                  set info = Nothing
                  Сам шаблон из txt-файла:
                  По кредиту от ContractDateFrom:
                  Платеж PaymentSum ContractFund
                  Рекомендуемая дата внесения средств PaymentNeedDate

                  Комментарий

                  Обработка...
                  X