3

我正在尝试将 Spotfire 可视化导出到 xlsx 文件。为了导出数据,我需要能够将可视化的数据写入临时文件。IronPython(2.7.7) 脚本在作为 Spotfire 桌面应用程序运行时工作,因为它使用本地计算机的临时文件位置。但是,它在 Web 上不起作用,因为该脚本无权写入由Path.GetTempFileName().

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

脚本:

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

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

4

2 回答 2

2

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

我最好的建议是授权用户右键单击视觉对象来下载表格,因为这是最简单的方法并且不需要编码。

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

于 2020-02-27T20:35:06.160 回答
0

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

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

于 2020-02-28T19:16:48.267 回答