如何在Spotfire IronPython脚本中安全地使用tempfile进行web使用



我正在尝试将Spotfire可视化导出到xlsx文件。为了导出数据,我需要能够将可视化的数据写入临时文件。IronPython(2.7.7(脚本在作为Spotfire Desktop应用程序运行时可以工作,因为它使用的是本地机器的临时文件位置。但是,它在web上不起作用,因为脚本没有写入Path.GetTempFileName()返回的服务器临时文件位置的权限。

如何通过脚本安全地写入临时文件以在网络中使用?

脚本:

from System.IO import Path, File, StreamWriter
from Spotfire.Dxp.Application.Visuals import TablePlot
tf = Path.GetTempFileName()
writer = StreamWriter(tf)
# visTable is a script parameter pointing to a TablePlot
visTable.As[TablePlot]().ExportText(writer)

在web中运行时出错:

Could not perform action 'write_to_file'.
Could not execute script 'write_to_file': The directory name is invalid.

at Spotfire.Dxp.Application.Scripting.ScriptService.Execute(ScriptDefinition script, Dictionary`2 scope, InternalLibraryManager internalLibraryManager, NotificationService notificationService)
at Spotfire.Dxp.Application.Scripting.ScriptManager.<>c__DisplayClass8_0.<ExecuteScript>b__0()
at Spotfire.Dxp.Framework.Commands.CommandHistory.Transaction(Executor executor, Boolean visible, Boolean sticky, Guid stickyGuid, Boolean isHighlight)
at Spotfire.Dxp.Framework.Commands.CommandHistory.Transaction(String displayName, Executor executor)
at Spotfire.Dxp.Application.Scripting.ManagedScript.Execute(Dictionary`2 environment)
at Spotfire.Dxp.Application.HtmlTextAreaControls.ActionControl.ModifyCore(Object value)
at Spotfire.Dxp.Application.Visuals.HtmlTextArea.InteractWithControl(String id, Action`1 interaction)

IronPython版本:2.7.7

Spotfire版本:10.3.2.8

编辑:内置的右键单击导出功能不是一个选项,因为最终目标是注入我公司的合规信息。

您可以将tempfile位置设置为Spotfire服务器和用户都可以访问的网络驱动器。

我最好的建议是让用户右键点击一个视觉来下载表格,因为这是最简单的方法,不需要编码。

我已经完成了编写一些将数据导出为CSV的脚本,该脚本在Desktop Client和WebPlayer中都可以使用,但它是R、Python、Javascript和HTML的混合体。可以在这里找到:我的Spotfire Wiki Post

我使用Spotfire Javascript API在HTML/ASPX页面中呈现我的所有分析。因此,当人们需要下载数据时,我设置了一个按钮来打开一个只显示表格的dxp页面,这样用户就可以右键点击下载。这种方法有助于在需要之前不显示数据。即使Javascript API也没有导出到CSV或EXCEL,仅限于PDF、Visual(图片(、Powerpoint和Reports(确定的PDF导出(

https://community.tibco.com/wiki/tibco-spotfire-javascript-api-overview

最新更新