使用JSON格式的coldfusion生成excel或html

我需要生成一个JSON格式的数据报告。 这是接收参数并显示带有数据或Excel的html表格的动作文件。 我需要帮助parsingJSON数据我正在进入所需的格式(HTML或Excel)。 我知道如何使用Excel格式化,我只需要帮助parsingJSON数据并输出它。

<cfajaxproxy cfc="components.acct.accttrx"> <script src="../jQuery/js/jquery-1.7.2.min.js"></script> <cfparam name="prD" default="0_0"> <cfparam name="sM" default="1"> <cfparam name="sY" default="2013"> <cfparam name="status" default="0"> <cfparam name="FORM.fileformat" default="html"> <script type="text/javascript"> jQuery(document).ready(function(){ var myURL = '../components/acct/accttrx.cfc'; function populateReport(){ $.ajax({ url: myURL + "?method=GetTranactions", type: 'POST', data: { prID: '<cfoutput>#prD#</cfoutput>', mn: '<cfoutput>#sM#</cfoutput>', yr: '<cfoutput>#sY#</cfoutput>', st: '<cfoutput>#status#</cfoutput>', ea_adm:'1', slist:'', lang: '1' }, dataType: "json", success: function(data){ $.each(data, function(index, item) { //(item.description,item.balance,item.accttrx_status); // I need help from this point to pass // data to cfml part of my code }); }, error: function(){ alert("An error has occurred while fetching records"); } }); populateReport(); }); </script> </HEAD> <body> <cfif FORM.fileformat Eq 'excel'> <cfset VARIABLES.vcFilename = "thisreport_" & DateFormat(Now(), "yyyymmdd") & "-" & TimeFormat(Now(), "HHmmss") & ".xls"> <cfsetting enablecfoutputonly="Yes"> <cfcontent type="application/vnd.ms-excel"> <cfheader name="Content-Disposition" value="inline;filename=""#VARIABLES.vcFilename#"""> <cfoutput> <!--- here display data from JSON object ---> </cfoutput> <cfsetting enablecfoutputonly="No"> <cfelse> <div id="reportcontents" /> <!--- display row html ---> </cfif> 

以下是Response的数据:

{“balance”: – 642.04000“description”:ABC公司,ee_name:Jon,Doe,plan_id:0借方: ,“sponsor_id”:5,“division_id”:0,“accttrx_month”:1,“credit”:26591.25000,“trx_employee_id”:1,“cheque_amt”:25000.00000,“cheque_no”:“”,“accttrx_status”:“B “accttrx_id”:15},{“balance”: – 642.04000,“description”:“ABC公司”,“ee_name”:“James,Done”,“plan_id”:0,“debit”:32233.07000,“accttrx_year “:2013,”sponsor_id“:5,”division_id“:0,”accttrx_month“:1,”credit“:30000.00000,”trx_employee_id“:1,”cheque_amt“:32233.07000,”cheque_no“:”“,”accttrx_status“ :“P”,“accttrx_id”:14}],“PAGE”:1,“RECORDS”:2,“TOTAL”:1.0}

如果您使用ColdFusion 8或更高版本,则可以使用DeserializeJSON()将JSON转换为结构。 然后,您可以使用cfloop循环此结构,并将结构的内容转换为查询(在循环内部使用QueryNew(),QueryAddRow()和QuerySetCell())。 从那里,如果您使用的是ColdFusion 9,则可以使用cfspreadsheet标记将该查询转换为Excel文件(或csv文件),也可以使用任何版本的ColdFusion输出普通的旧HTML,并设置标题欺骗浏览器认为这是一个Excel文件,如下所示:

 <cfcontent type="application/msexcel"> 
  1. 不要使用AJAX。 只需创build一个JS函数将报告参数推送到您的处理代码。 看到这个post的例子。 主要有:

      window.location="process.cfm?param1=&param2="; 
  2. 使用'../components/acct/accttrx.cfc'文件中的deserializeJSON()将发布的JSONparsing为CF结构。

  3. 使用以下CF来让浏览​​器识别文件下载:

      <cfheader name="Content-Disposition" value="attachment;filename=XXXX"> <cfcontent type="application/vnd.ms-excel" reset="false">