正在检索存储在磁盘上的报表



我有一个以.cfm文件形式存储的报告。我已经能够通过读取cffile来很好地检索它。现在我想要的选项是只检索报告的一部分,比如前50行。我决定试试fileReadLine():

<cfset repname = url['rep']>
<cfset type = url['type']>
<cfset dataFile = fileOpen("/var/www/reports/moxrep/#repname#.cfm", "read" ) >
<cfset i = 0>
<cfoutput>
<cfloop 
condition = "NOT FileIsEOF(dataFile) AND i LT 100">
<cfset i = i + 1>
<cfset inf = fileReadLine( dataFile ) > 
 #inf#
</cfloop>
</cfoutput>
<cfset fileClose( dataFile ) >  

它根本没有正确检索到东西。格式搞砸了。报告中的所有动态数据都丢失了。CSS链接未运行。还有许多额外的空行。

我做错什么了吗?或者fileReadLine只是不用于检索格式化的报告?如果没有,有没有办法用cffile只检索报告的一部分?

使用cfhttp获取报告,然后获取结果并将其分解为所需内容。

我不确定您是否意识到FileOpen()函数实际上是在读取原始CFML模板,而不是实际执行填充报表的查询。使用CFHTTP标记肯定是一种更好的方法,但要小心,因为您呈现的页面可能包含报表正确呈现所需的所有CSS,所以请在报表上使用ViewSource查看是否只需要50行。

我脑海中的问题是"为什么"你只想要50行?你在预览报告吗?只有1页长?您是否将其嵌入到仪表板中?您可能需要考虑修改.cfm"report",以便用特定标记(例如Span,甚至是自定义标记)包裹要在其他地方显示的区域,然后当您使用CFHTTP获取报告时,您可以使用XMLParse()函数解析结果(假设它的格式正确),并呈现您实际需要的报告部分。

最新更新