需要使用 lotus 脚本将多值导出到 excel 到不同的行

Multi-values needs to be exported to excel to different rows using lotus script

我试图导出多值字段,但无法实现。我尝试使用 Ubound 导出,但情况是我需要第一行中的第一个值和第二行中的第二个值,反之亦然。请帮我解决这个问题。我正在使用 excel 应用程序导出数据。

提前致谢。

ForAll b In fieldList 
If UBound(doc.getitemvalue(b)) <1 Then 

worksheet.cells(i,j).value =doc.getitemvalue(CStr(b)) 

Else 

'Join(doc.getitemvalue(CStr(b)),Chr(10)) 

worksheet.cells(i,j).value =Join(doc.getitemvalue(CStr(b)),Chr(10)) 

End If 
End Forall

创建一个循环,按索引遍历每个字段的所有值(在我的代码示例中为“x”)。再次使用 x 来偏移行值。

您将遇到一个问题,即每个 fieldName 的值将在电子表格中被覆盖,因为 ij 总是相同的,所以如果你的 fieldList 中有多个 fieldName,你需要做一些关于那也是。在我的示例中,我为每个 fieldName 递增了 j,以便它们位于不同的电子表格列中

ForAll fieldName In fieldList

    For x = LBound(doc.getitemvalue(fieldName)) to Ubound(doc.getitemvalue(fieldName))
        worksheet.cells(i + x, j).value = doc.getitemvalue(fieldName)(x)
    Next

    j = j + 1
End Forall

实现您在评论中提出的要求的替代版本:

ForAll fieldName In fieldList

    For x = LBound(doc.getitemvalue(fieldName)) to Ubound(doc.getitemvalue(fieldName))
        worksheet.cells(i, j + x).value = doc.getitemvalue(fieldName)(x)
    Next

    i = i + 1
End Forall

doc.getitemvalue(CStr(b)) 总是 returns 变体数组,即使 Ubound 小于一。

您的 Then 子句中的代码需要取消引用数组的第 0 个条目:

worksheet.cells(i,j).value =doc.getitemvalue(CStr(b))(0)

让我们假设以下文档:

Fieldname Value 0 Value 1 Value 2
FirstField Value0-First
SecondField Value0-Second Value1-Second Value2-Second
ThirdField Value0-Third Value1-Third

解决方案一: 如果你希望结果看起来像这样

FirstField SecondField ThirdField
Value0-First Value0-Second Value0-Third
Value1-Second Value1-Third
Value2-Second

然后你使用下面的代码:

cellY = 2
cellX = 1
Forall fieldName in fieldNameList
  For y = 0 to ubound( doc.GetitemValue( fieldName ) )
    worksheet.cells(cellY + y, cellX).value = doc.GetitemValue( fieldName )(y)
  Next
  cellX = cellX + 1
End Forall

方案二:如果你希望结果看起来像这样

Fieldname Value 0 Value 1 Value 2
FirstField Value0-First
SecondField Value0-Second Value1-Second Value2-Second
ThirdField Value0-Third Value1-Third

然后你使用下面的代码:

cellY = 1
cellX = 2
Forall fieldName in fieldNameList
  For x = 0 to ubound( doc.GetitemValue( fieldName ) )
    worksheet.cells(cellY, cellX+x).value = doc.GetitemValue( fieldName )(x)
  Next
  cellY = cellY + 1
End Forall

方案三: 如果你希望结果看起来像这样

All fields
FirstField
Value0-First
SecondField
Value0-Second
Value1-Second
Value2-Second
ThirdField
Value0-Third
Value1-Third

然后你使用下面的代码:

cellY = 1
cellX = 1
Forall fieldName in fieldNameList
  worksheet.cells(cellY, cellX).value = fieldName
  For y = 0 to ubound( doc.GetitemValue( fieldName ) )
    cellY = cellY + 1
    worksheet.cells(cellY, cellX).value = doc.GetitemValue( fieldName )(y)
  Next
  cellY = cellY + 1
End Forall