如何使用LOTUSSCRIPT得到视图中每一个列的值
如题 问题点数:0、回复次数:6Top
1 楼gjd111686(数字金刚)回复于 2003-12-04 21:28:33 得分 0
要打印是吧!
Sub Initialize
Dim session As New notessession
Dim db As notesdatabase
Set db=session.currentdatabase
Dim view As notesview
Set view=db.getview("PrintView")
iPageLine=Int(Inputbox("每页行数?"))
Dim excelApplication As Variant
Dim excelWorkbook As Variant
Dim excelSheet As Variant
Set excelApplication = CreateObject("Excel.Application")
excelApplication.Visible = True
Set excelWorkbook = excelApplication.Workbooks.Add
Set excelSheet = excelWorkbook.Worksheets("Sheet1")
REM 输出开始
'设置行高
excelSheet.Rows.RowHeight=40
'完成
'垂直居中
excelSheet.Rows.VerticalAlignment =2
'完成
Dim navigator As notesviewnavigator
Dim entry As notesviewentry
Set navigator=view.createviewnav()
Set entry=navigator.getfirst
i=0
Do While(Not entry Is Nothing)
If i Mod iPageLine=0 Then '10行换页[A4]
If i<>0 Then
j=1
Forall columnvalue In Entry.columnvalues
excelSheet.Cells(i,j)=columnvalue
j=j+1
End Forall
Set entry=navigator.getnext(entry)
End If
excelSheet.Range(Cstr(i+1)+":"+Cstr(i+1)).Font.Size=18
excelSheet.Range(Cstr(i+1)+":"+Cstr(i+1)).Borders.Weight=1
excelSheet.Rows(i+1).RowHeight=60
excelSheet.Range("A"+Cstr(i+1)+":"+"E"+Cstr(i+1)).Merge(True) '合并单元格
excelSheet.Range("A"+Cstr(i+1)+":"+"E"+Cstr(i+1)).MergeCells=True '合并单元格
excelSheet.Cells(i+1,1)="收文处理登记表"
excelSheet.Cells(i+1,1).HorizontalAlignment=3
excelSheet.Cells(i+1,1).VerticalAlignment=3
k=1
Forall m In view.columns
excelSheet.Cells(i+2,k)=m.title
excelSheet.Cells(i+2,k).HorizontalAlignment=3
k=k+1
End Forall
i=i+3
Else
j=1
Forall columnvalue In Entry.columnvalues
excelSheet.Cells(i,j)=columnvalue
'设置列宽
excelSheet.Columns(j).ColumnWidth=20
'完成
j=j+1
End Forall
Set entry=navigator.getnext(entry)
i=i+1
End If
Loop
i=i-1
If i Mod iPageLine<>0 Then
For k=1 To iPageLine-(i Mod iPageLine)
excelSheet.Cells(i+k,1)=" "
Next
End If
REM 输出结束
excelSheet.UsedRange.Select
'excelSheet.UsedRange.EntireColumn.AutoFit
excelSheet.UsedRange.WrapText=True
excelSheet.UsedRange.Borders.Weight=2
excelSheet.UsedRange.VerticalAlignment = 3
'excelSheet.UsedRange.HorizontalAlignment=4'水平右对齐
excelWorkbook.PersonalViewPrintSettings=True '单元格中文本自动换行
excelWorkbook.PrintPreview
REM excelWorkbook.PrintOut
excelApplication.quit
Set excelSheet=Nothing
End SubTop
2 楼sodeberge(累了,真的累了。)回复于 2003-12-04 21:51:09 得分 0
能不能简单一点,我只要得到每个列的值!!!Top
3 楼IBM123()回复于 2003-12-05 09:01:13 得分 0
Array=evaluate(|@DbColumn("";"SERVER":"Database.NSF";"ViewName";2)|)
Top
4 楼rosemerry(珏儿)回复于 2003-12-05 09:57:13 得分 0
楼上的说的对,最后的一个2就是列值了,可以自由进行变换。Top
5 楼IBM123()回复于 2003-12-05 11:15:09 得分 0
公式有数据限制,使用LS吧!
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Dim Array() As String
Set db = session.CurrentDatabase
Set view = db.GetView("Viewname")
Set doc = view.GetFirstDocument
Set vc = view.AllEntries
Redim Array(1 To vc.count)
For x=1 To vc.count
Set entry = vc.GetNthEntry(x)
array(x)=entry.ColumnValues(2) '第二列
Next
End SubTop
6 楼rosemerry(珏儿)回复于 2003-12-05 13:51:18 得分 0
公式是没有限制的,限制是域的限制,对于R5来说域有64K的限制,如果你不是用R5就没有关系。公式比LS好处是他方便,速度快。而LS比公式的好处是他能做到公式所做不到的效果,如果将两种很好的结合,要靠自己的琢磨。Top




