如何在 Spotfire IronPython 脚本中安全地使用临时文件以供 Web 使用?
How to safely use a tempfile in a Spotfire IronPython script for web use?
我正在尝试将 Spotfire 可视化导出到 xlsx 文件。为了导出数据,我需要能够将可视化数据写入临时文件。 IronPython(2.7.7) 脚本在 运行 用作 Spotfire 桌面应用程序时工作,因为它使用本地计算机的临时文件位置。但是,它在网络上不起作用,因为脚本没有权限写入 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)
网络中 运行 时出错:
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
编辑: 内置的右键单击导出功能不是一个选项,因为最终目标是注入我公司的合规信息。
您可以将临时文件位置设置为 Spotfire 服务器和用户都可以访问的网络驱动器。
我最好的建议是授权用户右键单击视觉对象以下载 table,因为这是最简单的方法并且不需要编码。
我已经实现了编写一些脚本将数据导出为 CSV 格式,它在 Desktop Client 和 WebPlayer 中都可以使用,但它是 R、Python、Javascript 和 HTML.可以在这里找到:My Spotfire Wiki Post
我使用 Spotfire Javascript API 在 HTML/ASPX 页面中呈现我的所有分析。所以当人们需要下载数据的时候,我设置了一个按钮来打开一个只显示table的dxp页面,这样用户就可以右键点击下载。这种方法有助于在需要时才显示数据。即使 Javascript API 也没有导出到 CSV 或 EXCEL 只有 PDF 、 Visual (图片)、 Powerpoint 和 Reports(确定的 PDF 导出)
https://community.tibco.com/wiki/tibco-spotfire-javascript-api-overview
我正在尝试将 Spotfire 可视化导出到 xlsx 文件。为了导出数据,我需要能够将可视化数据写入临时文件。 IronPython(2.7.7) 脚本在 运行 用作 Spotfire 桌面应用程序时工作,因为它使用本地计算机的临时文件位置。但是,它在网络上不起作用,因为脚本没有权限写入 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)
网络中 运行 时出错:
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
编辑: 内置的右键单击导出功能不是一个选项,因为最终目标是注入我公司的合规信息。
您可以将临时文件位置设置为 Spotfire 服务器和用户都可以访问的网络驱动器。
我最好的建议是授权用户右键单击视觉对象以下载 table,因为这是最简单的方法并且不需要编码。
我已经实现了编写一些脚本将数据导出为 CSV 格式,它在 Desktop Client 和 WebPlayer 中都可以使用,但它是 R、Python、Javascript 和 HTML.可以在这里找到:My Spotfire Wiki Post
我使用 Spotfire Javascript API 在 HTML/ASPX 页面中呈现我的所有分析。所以当人们需要下载数据的时候,我设置了一个按钮来打开一个只显示table的dxp页面,这样用户就可以右键点击下载。这种方法有助于在需要时才显示数据。即使 Javascript API 也没有导出到 CSV 或 EXCEL 只有 PDF 、 Visual (图片)、 Powerpoint 和 Reports(确定的 PDF 导出)
https://community.tibco.com/wiki/tibco-spotfire-javascript-api-overview