Программа позволяет выгружать отчеты пользователям из базы данных Oracle в MS Excel. Это серверное решение, которое не занимает оперативную память. Отчет сохраняется в процессе выгрузки непосредственно в файловую систему сервера и по окончанию загрузки пользователь получает ссылку на запрошенный отчет с введенными параметрами. Так же время формирования отчета неограниченно. Т.е. отчет может формироваться часами, и при этом не произойдёт ошибок, связанных с превышением вермени ожидания.
Программа состоит из 2 частей.
По нажатию на кнопку Тест открывается окно в котором либо можно проверить как работает выгрузка, либо задать имена колонок.
По нажатию на один из отчетов открывается страница с выгрузкой.
<appSettings/> … <add key="connectionFile" value="C:\ExcelReporting\ConfigFiles\connections.xml" /> … </appSettings>
<?xml version="1.0" encoding="utf-8"?> <ArrayOfDBConnection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DBConnection> <type>Oracle</type> <value>Data Source=ORACLEBASE;User ID=ORACLEUSER;Password=ORACLEUSERPASSWORD;Unicode=True</value> </DBConnection> </ArrayOfDBConnection>
<appSettings> … <add key="PublicPath" value="C:\ExcelReporting\TempReports\" /> … </appSettings>
<appSettings> … <add key="ClientFileName" value="special" /> … </appSettings>
<appSettings> … <add key="DBSecurity" value="true" /> … </appSettings>
<appSettings> … <add key="SourceDir" value="C:\ExcelReporting\ConfigFiles\" /> … </appSettings>
<appSettings> … <add key="ExcelTemplatesPath" value="C:\ExcelReporting\TempReports\ExcelTemplates\"/> … </appSettings>
<appSettings> … <add key="AccessTable" value="utl_role_username" /> … </appSettings>
create table UTL_ROLE_USERNAME ( id_user VARCHAR2(255) not null, username VARCHAR2(255), id_role NUMBER not null, name_role NVARCHAR2(255), server_name NVARCHAR2(255) not null, email VARCHAR2(255) )
insert into utl_role_username (id_user, username, id_role, name_role, server_name, email) values (:v_id_user, '123', 1, 'Администраторы', 'test', '123');Где : v_id_user = Request.LogonUserIdentity.Name
<appSettings> … <add key="ReportsColumnNames" value="utl_reports_column_names" /> … </appSettings>
create table UTL_REPORTS_COLUMN_NAMES ( reportname VARCHAR2(1000), basecolumnname VARCHAR2(255), excelcolumnname VARCHAR2(4000) )
<appSettings> … <add key="ReportsColumnNamesLog" value="utl_reports_column_names_log" /> … </appSettings>
create table UTL_REPORTS_COLUMN_NAMES_LOG ( reportname VARCHAR2(1000), basecolumnname VARCHAR2(255), excelcolumnname VARCHAR2(4000), user_name VARCHAR2(255), modifieddate DATE )
<appSettings> … <add key="utl_reports_log" value="utl_reports_log" /> … </appSettings>
create table UTL_REPORTS_LOG ( save_date DATE, save_user VARCHAR2(1000), data CLOB )