原創|使用教程|編輯:鄭恭琳|2019-10-17 15:37:06.277|閱讀 301 次
概述:這是關于結合使用FastReport.Net和PHP應用程序的文章的最后一部分。 在以前的文章(查看第1部分、第2部分)中,我們研究了在ASP.Net Core上創建服務器部件的方法。讓我提醒您,它使您可以獲取報表顯示,將報表加載到其中以進行編輯的報表設計器顯示,以給定格式下載報表。 現在我們必須實現一個php應用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
這是關于結合使用FastReport.Net和PHP應用程序的文章的最后一部分。
在以前的文章(查看第1部分、第2部分)中,我們研究了在ASP.Net Core上創建服務器部件的方法。讓我提醒您,它使您可以獲取報表顯示,將報表加載到其中以進行編輯的報表設計器顯示,以給定格式下載報表。
現在我們必須實現一個php應用程序。為此,您必須安裝Web服務器,例如,在其上安裝了Apache和PHP。
在本文中,我們將不重復贅述創建php應用程序的原理。
讓我們確定頁面的結構。我們需要3個網頁模板:
主頁——顯示網絡報表;
設計器——顯示報表設計器;
下載——按鈕以下載報表。
每個頁面的菜單標題都相同。因此,將其放在單獨的文件header.php中是有意義的。讓我們在預安裝的Apache目錄的htdocs文件夾中創建它。
<div id="header"> <div > <h1>FastReports</h1> <ul > <li><a href="index.php">Home</a></li> <li ><a href="designer.php">Designer</a></li> <li ><a href="downloads.php">Downloads</a></li> </ul> </div> </div>
同樣,在每個頁面上,將有一個包含報表和操作按鈕的下拉列表。此模塊也移至單獨的文件——報表列表:
<?php $info = file_get_contents('//localhost:44346/api/reports/'); $res = json_decode($info, true); ?> <div id="dropdown"> <select name="reports" id="reports" > <?php foreach ($res as $key => $value) { echo '<option value='.$key.'>'.$value['reportName'].'</option>'; } ?> <input type="button" name="submit" value="Get" onclick=get()'> </div>
這使用內容檢索方法以json格式加載報表列表。該鏈接指向本地調試iis文件,在該文件中“引發”了我們的服務器部分。接下來,使用php代碼,我們使用從服務器接收到的數據填寫下拉列表。獲取“Get”按鈕啟動選定的()函數,該函數在每個頁面上都是唯一的。
眾所周知,通常index.php文件用于網站的主頁。讓我們來創建它。
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>FastReports</title> <meta name="title" content="FastReports" /> <link rel="stylesheet" href="stylesite.css" type="text/css" media="screen, projection" /> </head> <body> <div id="main"> <?php include ("header.php"); ?> <?php include ("reportslist.php"); ?> <script type="text/javascript" language="javascript"> function get(){ var name = document.getElementById('reports').options[document.getElementById('reports').value].text document.getElementById('forFrame').innerHTML = '<iframe id="frame" src="//localhost:44346/api/reports/ShowReport?name='+name+'" width="1000" height="1000" />'; }; </script> <div id="forFrame"></div> </div> </body> </html>
該頁面模板包括標題和正文。通常,標題包括標題、元數據、樣式鏈接。在頁面的正文中,我們包含了帶有標題和下拉列表的文件。請記住,reportslist.php模塊中的獲取“Get”按鈕調用了Get ()函數。
讓我們考慮在javascript中實現此功能。首先,您需要獲取所選報表的名稱,然后在后端調用ShowReport方法時將其作為參數傳遞。要加載外部對象(WebReport),我們將使用iframe標簽。JavaScript再次幫助我們在<div>標簽內動態插入ifame。在到源的鏈接中,我們使用了一個變量——報表的名稱。
樣式表也是相當簡單的stylesite.css:
* { margin: 0; padding: 0; } #main{ background-color:#fff; width: 1000px; margin:0 auto; overflow:hidden; } #header { height:70px; background-color: #FFCC33; text-align: center; } #header li { list-style: none; display: inline; padding: 10px 20px 0px 10px; } #header li a { padding:3px; text-decoration: none; color: #000; } #header li a:hover { text-decoration: none; padding:3px; text-decoration: none; color: red; } #header H1 { font-family: Times, Tahoma, Arial,Verdana, sans-serif; } #dropdown { padding: 5px; }
讓我們啟動我們的Web服務器并查看索引頁面:
我們有一個下拉列表和一個按鈕。選擇報表并按下按鈕:
結果,我們得到一個Web報表對象。此外,工具欄上的按鈕沒有丟失功能,您可以導出為所需的格式并進行打印。
現在,我們實現Dedigner.php頁面。使用index.php在同一目錄中創建它:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>FastReports</title> <meta name="title" content="FastReports" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <link rel="stylesheet" href="stylesite.css" type="text/css" media="screen, projection" /> </head> <body> <div id="main"> <?php include ("header.php"); ?> <?php include ("reportslist.php"); ?> <script type="text/javascript" language="javascript"> function get(){ var name = document.getElementById('reports').options[document.getElementById('reports').value].text document.getElementById('forFrame').innerHTML = '<iframe id="frame" src="//localhost:44346/api/reports/Design?name='+name+'" width="1000" height="1000" />'; }; </script> <div id="forFrame"></div> </div> </body> </html>
如您所見,html頁面模板與index.php沒什么不同。唯一的區別在于Get ()方法。我們從下拉列表中選擇報表的名稱。然后,在后端插入帶參考設計方法的iframe。在參數中,我們傳遞報表的名稱。結果,我們將看到類似于index的頁面:
但是,如果我們單擊Get ()按鈕:
我們得到了一個帶有已加載報表模板的設計器。我們可以對其進行編輯并保存:
綠色框中保存的消息將告訴我們報表已保存。
仍然需要執行第三頁——下載。創建文件downloads.php:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>FastReports</title> <meta name="title" content="FastReports" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <link rel="stylesheet" href="stylesite.css" type="text/css" media="screen, projection" /> </head> <body> <div id="main"> <?php include("header.php"); ?> <?php include("reportslist.php"); ?> <p>Please select report format:</p> <div> <input type="radio" id="pdf" name="r" value="pdf"> <label for="pdf">pdf</label> <input type="radio" id="html" name="r" value="html"> <label for="html">html</label> </div> <script type="text/javascript" language="javascript"> function get(){ var number = document.getElementById('reports').value; number++ var type = ''; if (number > 0) { var inp = document.getElementsByName('r'); for (var i = 0; i < inp.length; i++) { if (inp[i].type == "radio" && inp[i].checked) { type = inp[i].value; } } var elem = document.createElement('a'); elem.setAttribute('href','//localhost:44346/api/reports/'+number+'?format='+type); elem.setAttribute('download', 'download'); elem.click(); } } </script> </div> </body> </html>
除下拉列表外,頁面模板還包含兩個單選按鈕:pdf、html。這是我們在后端實現的兩種導出類型。這次的Get ()方法有很大的不同。我們將使用下拉列表中選擇的報表的索引代替名稱。在腳本中,我們創建<a>標記并將鏈接設置為后端,在此處使用WebApi以指定的格式獲取索引報表。形成鏈接后,我們立即以編程方式單擊它。因此,我們下載了文件。運作方式如下:
單擊獲取按鈕。然后我們得到文件:
您可以像在第一頁上那樣在WebReport對象中顯示報表,然后進行導出。下載“Downloads”頁面顯示了一種直接從服務器獲取報表導出的替代方法。
本文總結了由PHP應用程序處理FastReport.Net報表的三個部分。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn