我将报告存储为.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检索报告的一部分?
答案 0 :(得分:2)
使用cfhttp获取报告,然后将结果删除并将其删除到您需要的位置。
答案 1 :(得分:0)
我不确定您是否意识到FileOpen()函数实际上正在读取原始CFML模板,而不是实际执行填充报表的查询。使用CFHTTP标签绝对是一种更好的方法,但要小心,因为您呈现的页面可能包含报告正确呈现所需的所有CSS,因此请在报告上使用“查看源”来查看是否只需要50行。
我心中燃烧的问题是“为什么”你只需要50行?你在预览报告吗?它只有1页长?您是否将其嵌入仪表板?您可能需要考虑修改.cfm“报告”,以便您想要在其他地方显示的区域包含特定标记(例如Span或甚至是自定义的东西),然后当您使用CFHTTP获取报告时,您可以使用XMLParse()函数解析结果(假设格式正确)并渲染实际需要的报表部分。