WEB-приложение Сведение отчетности  (21.11.2024)
Загрузка рабочих книг Excel
В дополнение к ранее описанным объектам, скрипт загрузки рабочей книги Excel имеет доступ к следующему:
  • Переменная WorkBook : ExcelWorkBook (только для чтения) содержит объект-рабочую книгу. Через эту переменную вы можете обращаться к любым свойствам и методам объектной модели Microsoft Excel.
Пример
Ниже приведен откомментированный пример скрипта загрузки рабочей книги Excel:
001'Так можно и нужно анализировать ячейки рабочей книги Excel.
002'WorkBook - объект рабочей книги.
003
004'Фактически здесь написано: если на листе "Лист 1" в ячейке D13 содержится значение,
005'отличное от "Форма 160/128q", то это не "наша" рабочая книга, ее не надо обрабатывать.
006
007if WorkBook.WorkSheets("Лист 1").Range("D13").Value <> "Форма 160/128q" then
008  'Текстовый файл не признан "своим".
009  InvalidData = True
010else
011  'Следите за отступами.
012
013  Message("Анализируем файл.") 'Сообщение пользователю в протокол загрузки.
014
015  '1. Создание корневого элемента REPORTS
016  set xml.documentElement = xml.createElement("REPORTS")
017
018  '2. Создание элемента-отчета. Повторять столько раз, сколько нужно отчетов.
019  with xml.documentElement.appendChild(xml.createElement("REPORT"))
020
021    '3. Атрибуты отчета
022
023    .appendChild(xml.createElement("AGENT")).appendChild(xml.createTextNode("Мнемокод контрагента"))
024    .appendChild(xml.createElement("FORM")).appendChild(xml.createTextNode("Мнемокод формы"))
025    .appendChild(xml.createElement("BDATE")).appendChild(xml.createTextNode("Дата в формете YYYY-MM-DD"))
026    .appendChild(xml.createElement("NOTE")).appendChild(xml.createTextNode("Примечание!!!"))
027    .appendChild(xml.createElement("KIND")).appendChild(xml.createTextNode("0")) '0-первичный, 1-сводный
028
029    'Также можно установить дополнительные атрибуты отчета:
030    '.appendChild(xml.createElement("CATALOG")).appendChild(xml.createTextNode("Наименование каталога"))
031    '.appendChild(xml.createElement("CHECKED")).appendChild(xml.createTextNode("1"))
032    '.appendChild(xml.createElement("STATE")).appendChild(xml.createTextNode("2"))
033    '.appendChild(xml.createElement("SENT")).appendChild(xml.createTextNode("1"))
034
035    '4. Список подотчетов
036    with .appendChild(xml.createElement("SUBREPORTS"))
037
038      '5. Главный подотчет (без мнемокода)
039      with .appendChild(xml.createElement("SUBREPORT"))
040
041        '6. Список значений
042        with .appendChild(xml.createElement("VALUES"))
043
044          'Создать столько значений, сколько нужно.
045          '7. Значение числового показателя
046          with .appendChild(xml.createElement("VALUE"))
047            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
048            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
049          end with
050
051          '8. Значение строкового показателя
052          with .appendChild(xml.createElement("VALUE"))
053            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
054            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
055          end with
056
057          '9. Значение показателя типа "дата".
058          with .appendChild(xml.createElement("VALUE"))
059            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
060            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
061          end with
062
063        end with
064
065        '10. Таблицы показателей - если редакция содержит таблицы показателей.
066        with .appendChild(xml.createElement("TABLES"))
067
068          '11. Таблица. Повторять столько раз, сколько нужно таблиц.
069          with .appendChild(xml.createElement("TABLE"))
070
071            '12. Наименование таблицы
072            .appendChild(xml.createElement("NAME")).appendChild(xml.createTextNode("Наименование таблицы"))
073
074            '13. Строки таблицы
075            with .appendChild(xml.createElement("ROWS"))
076
077              '14. Строка таблицы
078              with .appendChild(xml.createElement("ROW"))
079
080                '15. Значение строкового показателя
081                with .appendChild(xml.createElement("VALUE"))
082                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
083                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
084                end with
085
086                with .appendChild(xml.createElement("VALUE"))
087                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
088                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
089                end with
090
091              end with
092
093              '16. Строка таблицы
094              with .appendChild(xml.createElement("ROW"))
095
096                '17. Значение строкового показателя
097                with .appendChild(xml.createElement("VALUE"))
098                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
099                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
100                end with
101
102                with .appendChild(xml.createElement("VALUE"))
103                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
104                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
105                end with
106
107              end with
108
109            end with
110
111          end with
112
113        end with
114
115      end with
116
117      '18. Подотчет. Повторять столько раз, сколько нужно подотчетов.
118      with .appendChild(xml.createElement("SUBREPORT"))
119
120        '19. Мнемокод разреза подотчета
121        .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод разреза"))
122
123        '20. Список занчений
124        with .appendChild(xml.createElement("VALUES"))
125
126          'Создать столько значений, сколько нужно.
127          '21. Значение числового показателя
128          with .appendChild(xml.createElement("VALUE"))
129            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
130            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
131          end with
132
133          '22. Значение строкового показателя
134          with .appendChild(xml.createElement("VALUE"))
135            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
136            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
137          end with
138
139          '23. Значение показателя типа "дата".
140          with .appendChild(xml.createElement("VALUE"))
141            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
142            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
143          end with
144
145        end with
146
147        'Создать таблицы, если они нужны.
148
149      end with
150
151    end with
152  end with
153end if