我是IronPython的新手并尝试使用以下代码将我的交叉表从Spotfire导出到excel。
如何修改此脚本以包含定义vizTable?
import System
from System.IO import FileStream, FileMode
from Spotfire.Dxp.Application.Visuals import TablePlot
from Spotfire.Dxp.Data.Export import DataWriterTypeIdentifiers
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import SaveFileDialog
SaveFile = SaveFileDialog() #GETS THE FILE PATH FROM THE USER THROUGH A FILEDIALOG
SaveFile.Filter = "xls Format (*.xls)|*.xlsx|*.xls|*.xlsx"
SaveFile.ShowDialog()
saveFilename = SaveFile.FileName
print "saveFilename=", saveFilename
stream = FileStream(saveFilename, FileMode.Create) #Export Table data to the file
vizTable.As[exportWellHeader]().ExportData(DataWriterTypeIdentifiers.ExcelXlsxDataWriter, stream)
stream.Dispose()
我一直收到以下错误。我设置了一个脚本参数,但不知道在哪里加入脚本。
错误讯息:
saveFilename = C:\ Users \ D565046 \ Desktop \ test 3.xlsx
追溯(最近的呼叫最后):
文件" Spotfire.Dxp.Application.ScriptSupport",行未知,在ExecuteForDebugging中 文件"< string>",第14行,在< module>中 NameError:name' vizTable'未定义Microsoft.Scripting.Runtime.UnboundNameException:name' vizTable'未定义
at IronPython.Runtime.PythonContext.MissingName(SymbolId name)
在Microsoft.Scripting.Runtime.LanguageContext.LookupName(CodeContext上下文,SymbolId名称)
$ 456 ## 456(关闭,范围,语言上下文)
at Spotfire.Dxp.Application.ScriptSupport.IronPythonScriptEngine.ExecuteForDebugging(String scriptCode,Dictionary`2 scope,Stream outputStream)
答案 0 :(得分:1)
我相信这里发生了两件事。
1)vizTable
应该在"脚本参数中定义"脚本下方的区域,与exportWellHeader
完全相同,并引用要导出的可视化(交叉表)。
2)我认为第14行不正确,你不应该有exportWellHeader
之类的东西。我认为它应该更像是:
vizTable.As[CrossTablePlot]().ExportText(DataWriterTypeIdentifiers.ExcelXlsxDataWriter, stream)
来源:http://easyspotfire.blogspot.com/2014/11/export-cross-table-visualization-to-file.html
请注意,在引用的链接中,脚本作者将数据导出到文本文件,而不是Excel文件。