如何使用IronPython从Spotfire中的表的所有列获取值

时间:2018-06-04 13:18:39

标签: ironpython spotfire

我找到了一个IronPython代码来检索特定列或多列(显式定义)的所有数据但是我需要在分析中迭代所有数据,我希望使用一个代码可以让我这样做而不用定义所有列,但只处理所有表的所有行。

编辑: 我似乎必须澄清一下。有一个表对象的方法: https://docs.tibco.com/pub/doc_remote/sfire-analyst/7.7.0/TIB_sfire-analyst_7.7.0_api/html/M_Spotfire_Dxp_Data_DataTable_GetRows.htm

数据表。 GetRows方法(DataValueCursor [])

我需要的是能够传递'list / array / whatever'游标而不事先知道每个表有多少列。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码遍历所有表格,行和列。

from Spotfire.Dxp.Data import *
for eDataTable in Document.Data.Tables:
    for eColumn in eDataTable.Columns:
        for eTableRows in range(0,eDataTable.RowCount):
            print "Table: " + eDataTable.Name + "\tColumn: " + eColumn.Name +"\tRow: " + str(eTableRows) + "\tValue: " +eDataTable.Columns[eColumn.Name].RowValues.GetFormattedValue(eTableRows)

修改

它有点麻烦,但看起来你可以传递一个游标数组......像这样,打印一个表结构

from Spotfire.Dxp.Data import *
from System.Collections.Generic import List
import System
from System import Array
for eTable in Document.Data.Tables:
    print "~~~~~~~~~~ " +eTable.Name+" ~~~~~~~~~~\n",
    CursList=[]
    ColList=[]
    for eColumn in eTable.Columns:
        CursList.append(DataValueCursor.Create(eTable.Columns[eColumn.Name]))
        ColList.append(eTable.Columns[eColumn.Name])
    CursArray = Array[DataValueCursor](CursList)
    for cName in range(ColList.Count):
        print str(ColList[cName])+"\t",
    print "\n",
    for row in eTable.GetRows(CursArray):
        for curs in range(CursList.Count):
            print str(CursList[curs].CurrentValue) + "\t",
        print "\n",