|
генерирование
|
|||
---|---|---|---|
#18+
Пришло и мое время тупить((( Добрый день! У меня есть запрос в pl/sql. Я загружаю его в php, с помощью objPhpExcel. Но теперь запрос, очень большой и я решил рисовать в XML. Хотя в этом ни шарю.((( Подскажите пжл. Я выложу типичный запрос, помогите пжл нарисовать его в php с помощью XML. На скринах запрос и php(objphpexcel). Как переделать его в php(xml) Спасибо begin for q in( select filial_id,region_id, reg,count(case when sd like '12.2018' then 1 end) dec2018, count(case when sd like '01.2019' then 1 end) jan2019, count(case when sd like '02.2019' then 1 end) feb2019, count(case when sd like '03.2019' then 1 end) mar2019 from( select distinct(lic), filial_id, reg,region_id, sd from (select cs.id filial_id,t.region_id region_id, trim(r.name) reg, a.id lic, tdr.debit nach, to_char(tdr.service_date, 'mm.yyyy') sd from db.abonent a, db.tdr tdr, db.report_date rd, db.crm_server cs, db.region r, db.town t, db.abonent_type at, db.budget bg, db.sap_client sap where -- tdr.report_date_id=1 tdr.report_date_id in (1, 12) and t.id=a.town_id and t.region_id=r.id and tdr.abonent_id=a.id and rd.id=tdr.report_date_id and tdr.debit >= 0 and at.id=a.abonent_type_id and at.id=1 and a.budget_id=bg.id and bg.sap_client_id=sap.id and sap.note in ('AFL10', 'AFL20', 'AFL30', 'UD10', 'UD20', 'UD30', 'UKO10', 'UKO20', 'UKO30', 'FRN102', 'FRN202', 'FRN302') ) group by filial_id,reg,region_id, lic , sd) group by filial_id,region_id, reg) loop insert into zrdt.report_detail@zrdt (report_date, report_id, report_result_id, sub_report, filial_id, region_id, vfield1, nfield1, nfield2, nfield3, nfield4) values (to_char(sysdate, 'rrrrmm'), &1, &2, 0, q.filial_id, q.region_id, q.reg, nvl(q.dec2018, 0), nvl(q.jan2019, 0), nvl(q.feb2019, 0), nvl(q.mar2019, 0)); end loop; end; Далее то что РИСУЮ в пхп <?php //define( '_VALID_', 1 ); defined( '_VALID_' ) or die( 'Restricted access' ); $dir='/var/www/html/build'; //require_once( $dir.'/config.php' ); //$Config_db_nls_lang='AL32UTF8'; //require_once( $Config_absolute_path.'/main/db.php' ); //require_once( $dir.'/main/db.php' ); //$in_fname=$Config_absolute_path."/sql/".$tmpls; date_default_timezone_set('Asia/Aqtobe'); //'Europe/Moscow' require_once 'xls/PHPExcel.php'; $query="select * from zrdt.report where id=".$report_id; $database->setQuery($query); $database->loadObject($report); // создаем объект $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties() ->setCreator("Nurzhaubay A.") ->setLastModifiedBy() ->setTitle("10.161.2.10") ->setSubject("10.161.2.10") ->setDescription("") ->setKeywords(""); $objPHPExcel->setActiveSheetIndex(0); // получаем данные из БД $query="select f.full_name f_name,d.* from zrdt.report_detail d,zrdt.filial f where f.id=d.filial_id and report_id=".$report_id." and report_result_id=".$report_result_id." order by filial_id"; $database->setQuery($query);$rows = $database->loadObjectList(); // заполняем заголовок столбцов $objPHPExcel->setActiveSheetIndex(0) ->setCellValueByColumnAndRow(1,2,mb_convert_encoding('Регион', "utf-8","windows-1251")) ->setCellValueByColumnAndRow(2,2,mb_convert_encoding('Канал', "utf-8","windows-1251")) ->setCellValueByColumnAndRow(3,2,mb_convert_encoding('01.01.2019', "utf-8","windows-1251")) ->setCellValueByColumnAndRow(4,2,mb_convert_encoding('01.02.2019', "utf-8","windows-1251")) ->setCellValueByColumnAndRow(5,2,mb_convert_encoding('01.03.2019', "utf-8","windows-1251")); for ($i = 1; $i <= 14; $i++) { $objPHPExcel->setActiveSheetIndex(0)->setCellValueByColumnAndRow($i,4,$i); } $i=5;$start=5;$ostart=5; $dlevel=1;$cur_filial_id=''; $j=0;$n=count($rows);$k=0; if (count($rows)>0) { do { $row=$rows[$k]; if ($i==$start) {$cur_filial_id=$row->F_NAME;}; if ($cur_filial_id != $row->F_NAME) { $objPHPExcel->setActiveSheetIndex(0)->setCellValueByColumnAndRow(1,$i,mb_convert_encoding($cur_filial_id, "utf-8","windows-1251")); $cur_filial_id=$row->F_NAME;//$dlevel=$dlevel+1; for ($j = 3; $j <= 14; $j++) { if ($j<>14 ) { $objPHPExcel->setActiveSheetIndex(0)->setCellValueByColumnAndRow($j,$i,"=SUM(".PHPExcel_Cell::stringFromColumnIndex($j).$ostart.":".PHPExcel_Cell::stringFromColumnIndex($j).($i-1).")"); }else { $objPHPExcel->setActiveSheetIndex(0)->setCellValueByColumnAndRow($j,$i,"=SUM(".PHPExcel_Cell::stringFromColumnIndex($j).$ostart.":".PHPExcel_Cell::stringFromColumnIndex($j).($i-1).")"); } } $i++; $ostart=$i; } if ($k>=$n) {break;}; $objPHPExcel->setActiveSheetIndex(0) ->setCellValueByColumnAndRow(1,$i,mb_convert_encoding($row->F_NAME, "utf-8","windows-1251")) ->setCellValueByColumnAndRow(2,$i,mb_convert_encoding($row->VFIELD1, "utf-8","windows-1251")) ->setCellValueByColumnAndRow(3,$i,mb_convert_encoding($row->NFIELD1, "utf-8","windows-1251")) ->setCellValueByColumnAndRow(4,$i,mb_convert_encoding($row->NFIELD2, "utf-8","windows-1251")) ->setCellValueByColumnAndRow(5,$i,mb_convert_encoding($row->NFIELD3, "utf-8","windows-1251")); ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2019, 08:42 |
|
|
start [/forum/topic.php?fid=14&tid=1331941]: |
0ms |
get settings: |
3ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
158ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 8ms |
total: | 260ms |
0 / 0 |