You are viewing this page out of context. To see it in the context it is intended please click here.
About This Page
Reply posted by Adam Fenstermaker on Tue 20 Dec 2005 in response to Keeping the boss happy
Here's my take on the code to do this
Summarized a couple items from this thread also added a "content-disposition"tag which will launch the file in Excel (not excel within the browser) - so you
don't need to name your agent ".xls".
This will work with any view - replace GetCGIParm("VIEW") with the name of the
view you are using.
Sub Initialize
On Error Goto Handler
Dim s as New NotesSession
Dim db_Current as NotesDatabase
Dim vw_Export As NotesView
Dim nv As NotesViewNavigator
Dim ne As NotesViewEntry
Dim i_CurColumn As Integer
Set db_Current = s.CurrentDatabase
Set vw_Export = db_Current.GetView(GetCGIParm("VIEW"))
Set nv = vw_Export.CreateViewNav
Set ne = nv.GetFirst
Print |Content-Type: application/vnd.ms-excel|
Print |Content-disposition: attachment; filename=| & GetCGIParm("VIEW")
& |.xls|
Print |<table border="1">|
Print |<tr>|
Forall c In vw_Export.Columns
If Not c.IsHidden Then
Print |<td width="80"><b>| & c.Title & |</td>|
End If
End Forall
Print |</tr>
|
While Not(ne Is Nothing)
Print|<tr>|
i_CurColumn = 0
Forall c In vw_Export.Columns
If Not c.IsHidden Then
If Not ne.IsCategory And c.IsHideDetail Then
' TOTAL COLUMN AND HIDE DETAIL - PRINT BLANK CELL
Print |<td></td>|
Elseif c.TimeDateFmt = 0 And Isdate(ne.ColumnValues(i_CurColumn))
Then
' FORMAT DATE ONLY COLUMNS
Print |<td>| & Format$(ne.ColumnValues(i_CurColumn),"mm/dd/yy") &
|</td>|
Elseif Isarray(ne.ColumnValues(i_CurColumn)) Then
' FORMAT MULTI-VALUE COLUMNS
Print |<td>| & Join(ne.ColumnValues(i_CurColumn),"<br>") |</td>|
Else
Print |<td>| & ne.ColumnValues(i_CurColumn) & |</td>|
End If
End If
i_CurColumn = i_CurColumn + 1
End Forall
Print |</tr>
|
Set ne = nv.GetNext( ne )
Wend
Exit Sub
Handler:
Error Err, Error & {
//} & Getthreadinfo(1) & {:} & Erl
End Sub