28/09/2009
关键字:lotusscript 动态表格 创建 编辑 读写
keyword:lotusscript dynamin table create edit read write
以下代码,实现了从现有文档的表格中读取数据,并填写入新建文档的表格中:
Sub Click(Source As Button)
Dim NewUIWorkspace As New NotesUIWorkspace
Dim NewNoteSession As New NotesSession
Dim CurrentDB As NotesDatabase
Dim NewDoc As NotesDocument
Dim AuthorNotesName As NotesName
Dim TableNotesRichTextItem As NotesRichTextItem
Dim columnHeaderStyle As NotesRichTextStyle
Dim i As Integer
Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
Dim headerColor As NotesColorObject
Dim dataColor As NotesColorObject
Dim TableNotesRichTextNavigator As NotesRichTextNavigator
Dim TableNotesRichTextTable As NotesRichTextTable
Dim dataStyle As NotesRichTextStyle
Dim SectionNotesView As NotesView
Dim SectionNotesViewNavigator As NotesViewNavigator
Dim SectionNotesViewEntry As NotesViewEntry
Dim SectionNotesRichTextItem As NotesRichTextItem
Dim SectionNotesRichTextNavigator As NotesRichTextNavigator
Dim SectionNotesRichTextTable As NotesRichTextTable
Dim SectionNotesDocument As NotesDocument
Dim SectionTableNotesRichTextItem As NotesRichTextItem
Dim SectionCellNotesRichTextItem As NotesRichTextItem
Dim SectonTableNotesRichTextRange As NotesRichTextRange
Dim SectonCellNotesRichTextRange As NotesRichTextRange
Dim SectonParagraphNotesRichTextRange As NotesRichTextRange
Dim SectonTableNotesRichTextNavigator As NotesRichTextNavigator
Dim SectonCellNotesRichTextNavigator As NotesRichTextNavigator
Set CurrentDB = NewNoteSession.CurrentDatabase
'新建文档
Set NewDoc = New NotesDocument(CurrentDB)
NewDoc.form = "form1"
Set AuthorNotesName = NewNoteSession.CreateName(NewNoteSession.UserName)
Call NewDoc.AppendItemValue ( "DepartmentDairyName",AuthorNotesName.OrgUnit1 )
'画表
Set TableNotesRichTextItem = NewDoc.CreateRichTextItem("DepartmentDairy")
'设置表头格式
Set columnHeaderStyle = NewNoteSession.CreateRichTextStyle( )
columnHeaderStyle.Bold = True
columnHeaderStyle.FontSize = 20
columnHeaderStyle.NotesFont = TableNotesRichTextItem.GetNotesFont("Arial", True)
'设置列宽,5列
For i = 0 To 4
Set columnStyles(i) = NewNoteSession.CreateRichTextParagraphStyle
columnStyles(i).LeftMargin = 0
columnStyles(i).FirstLineLeftMargin = 0
Next
columnStyles(0).RightMargin = 8 * RULER_ONE_CENTIMETER
columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
columnStyles(2).RightMargin = 8 * RULER_ONE_CENTIMETER
columnStyles(3).RightMargin = 3 * RULER_ONE_CENTIMETER
columnStyles(4).RightMargin = 4 * RULER_ONE_CENTIMETER
'设置表头色彩
Set headerColor = NewNoteSession.CreateColorObject
Call headerColor.SetRGB(239,239,239)
Set dataColor = NewNoteSession.CreateColorObject
Call dataColor.SetRGB(255,255,255)
'创建空表
Call TableNotesRichTextItem.AppendTable(1,5,,,columnStyles)
Set TableNotesRichTextNavigator = TableNotesRichTextItem.CreateNavigator()
TableNotesRichTextNavigator.FindLastElement RTELEM_TYPE_TABLE
Set TableNotesRichTextTable = TableNotesRichTextNavigator.GetElement
TableNotesRichTextTable.Style = TABLESTYLE_TOP
TableNotesRichTextTable.SetColor headerColor
TableNotesRichTextTable.SetAlternateColor dataColor
'画表头
TableNotesRichTextItem.AppendStyle columnHeaderStyle
TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
TableNotesRichTextItem.AppendText "column1"
TableNotesRichTextItem.EndInsert
TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
TableNotesRichTextItem.AppendText "column2"
TableNotesRichTextItem.EndInsert
TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
TableNotesRichTextItem.AppendText "column3"
TableNotesRichTextItem.EndInsert
TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
TableNotesRichTextItem.AppendText "column4"
TableNotesRichTextItem.EndInsert
TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
TableNotesRichTextItem.AppendText "column5"
TableNotesRichTextItem.EndInsert
'设置单元格式
Set dataStyle = NewNoteSession.CreateRichTextStyle()
dataStyle.Bold = False
dataStyle.FontSize = 10
TableNotesRichTextNavigator.FindNextElement
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call TableNotesRichTextItem.AppendStyle(dataStyle)
TableNotesRichTextItem.EndInsert
'遍历最新的科室日结文档,以填充表项
Set SectionNotesView = CurrentDB.GetView("view0")
Set SectionNotesViewNavigator = SectionNotesView.CreateViewNav
Set SectionNotesViewEntry = SectionNotesViewNavigator.GetFirstDocument
While Not SectionNotesViewEntry Is Nothing
If Not Datevalue(SectionNotesViewEntry.Document.Created) = Today Goto FinishOverToday
Set SectionNotesDocument = SectionNotesViewEntry.Document
Set SectionNotesRichTextItem = SectionNotesDocument.GetFirstItem("SectionDairy")
Set SectionNotesRichTextNavigator = SectionNotesRichTextItem.CreateNavigator
SectionNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLE)
Set SectionTableNotesRichTextRange = SectionNotesRichTextItem.CreateRange
Call SectionTableNotesRichTextRange.SetBegin(SectionNotesRichTextNavigator)
Call SectionTableNotesRichTextRange.SetEnd(SectionNotesRichTextNavigator)
Set SectionTableNotesRichTextNavigator = SectionTableNotesRichTextRange.Navigator
Set SectonCellNotesRichTextRange = SectionNotesRichTextItem.CreateRange
Set SectonParagraphNotesRichTextRange = SectionNotesRichTextItem.CreateRange
Call SectionTableNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLECELL)
Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
'从第2行开始复制表项
While SectionTableNotesRichTextNavigator.FindNextElement (RTELEM_TYPE_TABLECELL)
Call TableNotesRichTextTable.AddRow(1)
TableNotesRichTextNavigator.FindNextElement
Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Do
Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)
Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
TableNotesRichTextItem.EndInsert
SectionTableNotesRichTextNavigator.FindNextElement
TableNotesRichTextNavigator.FindNextElement
Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Do
Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)
Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
TableNotesRichTextItem.EndInsert
SectionTableNotesRichTextNavigator.FindNextElement
TableNotesRichTextNavigator.FindNextElement
Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Do
Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)
Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
TableNotesRichTextItem.EndInsert
SectionTableNotesRichTextNavigator.FindNextElement
TableNotesRichTextNavigator.FindNextElement
Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Do
Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)
Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
TableNotesRichTextItem.EndInsert
SectionTableNotesRichTextNavigator.FindNextElement
TableNotesRichTextNavigator.FindNextElement
Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator
TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Do
Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)
Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
TableNotesRichTextItem.EndInsert
Wend
Set SectionNotesViewEntry = SectionNotesViewNavigator.GetNextDocument(SectionNotesViewEntry)
Wend
FinishOverToday:
Call NewDoc.Save(True,True)
Call NewUIWorkspace.ViewRefresh
End Sub