14 ноября, среда 14:32
Bankir.Ru

Объявление

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

Вывод отчета на несколько листов одного эксельника - возможно?

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

  • Вывод отчета на несколько листов одного эксельника - возможно?

    т.е. Возможность реализации многолистной Excel-формы (через НТМL-синтаксис в шаблоне) - возможно такое? как реализуете?
    ---
    С прошлого года в дистрибутивной отчетности Диасофта есть реализация выхода отчетов в формате Excel через НТМL-синтаксис в шаблоне отчета. Идем дальше...
    У пользователей возникла потребность при выдачи данных по договорам брокеров, причем один брокер может иметь один или несколько договоров. Пользователь просит выдавать один эксельник по брокеру, листы которого - это выдача по его договорам.

  • #2
    Как-то пробовал.
    Суть такая.
    Создаю шаблон с нужным кол-вом листов в Excel-е
    Сохраняю этот файл "Как Web-страницу" в MS Office 2000

    получается основной файл и папка с файлами-вкладками
    Затем делается сам отчет такого типа:
    PHP код:
    @SQL@=SQL{

    create table #Sheets
    (
     
    ID        numeric(15)
    ,
    Brief     varchar(32)
    ,
    Rec       varchar(254)
    )

    declare @
    DateE smalldatetime
          
    , @WorkBook varchar(254) -- имя основного Excel-файла
          
    , @Sheet1   varchar(254) -- имя первого листа Excel-файла
          
    , @Sheet2   varchar(254) -- имя второго листа Excel-файла
          
    , @Sheet3   varchar(254) -- имя третьего листа Excel-файла
          
    , @Sheet4   varchar(254) -- имя четвертоо листа Excel-файла

    select 
    @DateE = :DateEnd
    select 
    @WorkBook 'Sverka.xls'
         
    , @Sheet1 'Credit20208810.htm'
         
    , @Sheet2 'Sym33.htm'
         
    , @Sheet3 'Sym81.htm'
         
    , @Sheet4 'Compare.htm'

    delete tDocMark where SPID=@@SPID and Type=1

    insert into tDocMark
    (SPID,Type,ID)  
    select @@SPID1   -- основной файл
    union select 
    @@SPID2   -- вкладки
    union select 
    @@SPID3   -- вкладки
    union select 
    @@SPID4   -- вкладки
    union select 
    @@SPID5   -- вкладки


    insert 
    #Sheets (ID,Brief, Rec)     
    select 1, @WorkBook'Запись 1-01'
    union select 2, @Sheet1'Запись 2-01'    
    union select 2, @Sheet1'Запись 2-02'    
    union select 2, @Sheet1'Запись 2-03'    
    union select 2, @Sheet1'Запись 2-04'    
    union select 2, @Sheet1'Запись 2-05'    
    union select 3, @Sheet2'Запись 3-01'
    union select 3, @Sheet2'Запись 3-02'
    union select 4, @Sheet3'Запись 4-01'
    union select 4, @Sheet3'Запись 4-02'
    union select 4, @Sheet3'Запись 4-03'
    union select 5, @Sheet4'Запись 5-01'


    select ID
         
    Brief NF
         
    substring(convert(varchar(8),@DateE,112),1,4) + '-' substring(convert(varchar(8),@DateE,112),5,2YM
         
    Rec
         
    char(09) Tab
         
    , @WorkBook WorkBook
    from 
    #Sheets


    drop table #Sheets
    }

    [
    Fields]

    @
    CNT@ = Field{,@n15tCNT}

    @
    YM@ = Field{YM,@s9t}
    @
    ID@ = Field{ID,@n15t}
    @
    NF@ = Field{NF,@s64t}
    @
    WorkBook@ = Field{WorkBook,@s32t}
    @
    Rec@ = Field{Rec,@s254t}
    @
    Tab@ = Field{Tab,@s1

    @
    FILE@ = FileName{@YM@,\,@NF@}

    // Путь до каталога с отчетами в Диасофте
    //файл startext.bat содержит одну строку: start %1
    @UN@ = OnReportComplete{WinExec('P:\Diasoft\5Nt\Reports\startext.bat ' FilePath WorkBook),@s160}  


    [
    Mark]
    @
    MARK@=Mark{@ID@,INST, , ,True}



    &&
    #@UN@
    #@SQL@
    #@MARK@
    $@ID@
    #@FILE@

    $T
    #IF @ID@ = 1 
    #THEN
    Основной файл
    #ENDIF
    #IF @ID@ = 2 
    #THEN
    //Здесь html-файлик для листа1
    Операции по кредиту 20208.810
    #ENDIF
    #IF @ID@ = 3 
    #THEN
    //Здесь html-файлик для листа2
    Операции с кассовым символом 33
    #ENDIF
    #IF @ID@ = 4 
    #THEN
    //Здесь html-файлик для листа3
    Операции с кассовым символом 81
    #ENDIF
    #IF @ID@ = 5 
    #THEN
    //Здесь html-файлик для листа4
    Сверка Кредит 20208.810 и символа 33,81
    #ENDIF
    //@ID@@Tab@@YM@@Tab@@NF@@Tab@@Rec@
    $
    $

    &&
    && 
    Поучается в даннном примере сгенерируются файлики:
    Sverka.xls', - это основной html-файл
    'Credit20208810.htm', - а остальное это листы
    'Sym33.htm',
    'Sym81.htm',
    'Compare.htm'

    И запускается в конце, только основной файл он в себя подгрузит все листочки Excel-я

    Комментарий


    • #3
      Реализуем выгрузку в Excel на 8 листов, с графиками и прочими радостями жизни. Но не на HTML, на VB.

      Комментарий


      • #4
        Сообщение от igorekk Посмотреть сообщение
        Реализуем выгрузку в Excel на 8 листов, с графиками и прочими радостями жизни. Но не на HTML, на VB.
        Можно, pls, схематично расписать с примером!..

        Создаю шаблон с нужным кол-вом листов в Excel-е
        Сохраняю этот файл "Как Web-страницу" в MS Office 2000...
        Смутила куча файлов и кода (function) при таком сохранении...
        Непонятно как их заполнять из шаблона...

        Комментарий


        • #5
          Сообщение от DimaU Посмотреть сообщение
          Можно, pls, схематично расписать с примером!..
          Вот тут всё есть.
          http://dom.bankir.ru/showthread.php?t=86836

          Комментарий


          • #6
            Жена пришла очередной раз навестить мужа в тюрьме: - Ты знаешь, дорогой, я должна тебе во всем признаться, пока ты здесь, я изменила тебе. - Ты знаешь, любимая... я тебе тоже...- Но я этого не хотела!!! Это случайно произошло! - А уж я-то как не хотел...

            Комментарий

            Пользователи, просматривающие эту тему

            Свернуть

            Присутствует 1. Участников: 0, гостей: 1.

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