2015-07-10 51 views
1

我正在写任何从任何视图导出为ex​​cel。有许多样本可用,并且在“正常视图”下工作。只要我有一个具有静态值的列的视图,它就会被跳过。 (我试过“2”和2)(这是一个测试视图)我有一个4列的视图,1,3和4链接到文档上的字段,第2列只有数字2。NotesViewEntry与notesviewcolum不同的列

C1 | V2 | C3 | C4色谱柱

1 | 2 | 3 | 4个值

'这得到所有4列名

ForAll n In view.Columns 

     cNames(columnTotal) = n.title 

     columnTotal = columnTotal + 1 

End ForAll 

' 结果

'CNAME(0)= “C1”

' CNAME(0)= “V2”

'CNAME(0)= “C3”

' CNAME(0)= “C4”

'这得到只有3列的值

Set nav = view.createviewnav 

Set entry = nav.Getfirst() 

While Not entry Is Nothing 

    ForAll c In view.Columns 

     readvalue = entry.Columnvalues(columncounter-1) 

    End ForAll 

Wend  

' 结果

'entry.columnvalues(0)= “1”

' entry.columnvalues(1)= “3”

“entry.columnvalues(2)= “4”

我不能发布的截图,这是我第一次发帖,但它表明了entry.columnvalues包含3 VAL但是该条目的parent.columns(Notesviewcolumn())显示4个列名...

如何读取视图中显示的所有值,包括基础文档中不存在的值?

谢谢。

回答

1

文档告诉为entry.ColumnValues

如果它是由确定没有返回列值:

  • 含有一个唯一的用户界面功能,例如@IsExpandable或@DocNumber式。
  • 一个常数。

据德米特罗Pastovenskyi一个blog可以使用ColumnValuesIndex虽然认识到如果一个列是包含仅​​UI功能的恒定或公式。

其中有一个 ColumnValuesIndex> = 0

出口仅列:

ForAll n In view.Columns 
    If n.ColumnValuesIndex >= 0 Then 
     cNames(columnTotal) = n.title 
     columnTotal = columnTotal + 1 
    End If  
End ForAll 
+0

谢谢你的快速反应。我看了Dmytro Pastovenskyi的博客,这非常有用,但我做了一个小改动。在我的情况下,它也跳过了第一列,这只是一个字段值,没有公式,并且没有隐藏,但返回了索引0.我的代码构建了列名列表1st,看起来像这样,我得到了我想要的结果现在,将对其他观点进行更多测试并提供反馈。 ForAll n In view.Columns If Not(n.ColumnValuesIndex = -1)然后cNames(columnTotal)= n.title columnTotal = columnTotal + 1 End If End ForAll – Johan

+0

你是对的:0是一个真实列的有效值,所以'> 0'必须是'> = 0'。我改变了我的代码。 –