代码:
%INCLUDE "lsconst.lss"
%INCLUDE "lsxbeerr.lss"
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim v As NotesView
Dim docX As NotesDocument
Dim col As Integer
Dim lineitem As String
Dim View As String
Set db = session.CurrentDatabase
Print |Content-Type:application/vnd.ms-excel; charset=GB2312|
Print |Content-Disposition:Attachment; filename="Report.xls"|
' On Error Goto errorHandler
View="$AttachmentView" ' 这里加上转换的视图名称
Set v = db.GetView(View$)
Call v.refresh
col=1
Print ||
Print | <TABLE border=1>|
lineitem=""
Forall vColumn In v.Columns
If col=1 Then
lineitem=| <TBODY> <TR> <TH align=middle><FONT color=#0000ff size=3>|+vColumn.Title
Else
lineitem=lineitem+|</FONT> <TH align=middle><FONT color=#0000ff size=3>|+vColumn.Title
End If
col=col+1
End Forall
lineitem=lineitem
Print lineitem
Set docX=v.GetFirstDocument
lineitem=""
While Not docX Is Nothing
col=1
Forall cValue In docX.ColumnValues
If col=1 Then
lineitem=|</FONT> <TR>|
End If
If cValue="" Then
lineitem=lineitem+| <TD> </TD>|
Elseif Isdate(cValue) Then
lineitem=lineitem+| <TD style="vnd: dd-mmm-yyyy" align=right>|+cValue+||<BR> Elseif Isnumeric(cValue) Then
If (v.columns(col-1).numberformat=3) Then
lineitem=lineitem+| |+cValue+||
Else
lineitem=lineitem+| <TD align=right>|+cValue+||<BR> End If
Else
lineitem=lineitem+| <TD>|+cValue+||
End If
col=col+1
End Forall
Print lineitem+||
Set docX=v.GetNextDocument(docX)
Wend
Print |</TBODY></TABLE>|
Exit Sub
errorHandler:
Print "代理运行时出错 " & Err() & " : " & Error() & " - 行号为: "+Cstr (Erl) & Chr$(13)
Exit Sub
End Sub
以上是指定一个视图,先顺序地读取其列头,然后顺序地读一条一条的记录,打印出来。选择不同的协议,如”Print |Content-Type:application/vnd.ms-excel; charset=GB2312| ”,打印excel文档、“Print |Content-Type:application/vnd.ms-word; charset=GB2312| ”,打印word文档。代理中其他相应的地方也要进行改动。
进行改进:可以通过让代理先读取一个config文件,里面事先指定好视图的名称、可以导出的列的名称及在视图中的序列号,这样首先通过一个选择页面进行选择,然后再导出。