gem's profileWaiting…BlogLists Tools Help

Blog


    25/09/2009

    用lotusscript动态绘制表格

    关键字:lotusscript、动态表格、修改、dynamic table
     
    做了lotus的汇总报表,从现有文档中提取所需内容,并自动汇总成一张新的表格,效果如下:
     
    实现方法
    新建一个表单(本例中名为"科室日结"),并在其中添加一个RichText域(本例名为"SectionDairy"),然后用代码实现绘制功能。
    就我现在所知,只有在RichText域中的表格才能直接修改。
     
    代码看似复杂,其实不难,必要的地方有注释。具体如下:
     
    Sub Click(Source As Button) 
     Dim NewUIWorkspace As New NotesUIWorkspace
     Dim NewNoteSession As New NotesSession
     Dim CurrentDB As NotesDatabase 
     Set CurrentDB = NewNoteSession.CurrentDatabase
     
     '新建文档
     Dim NewDoc As NotesDocument
     Set NewDoc = New NotesDocument(CurrentDB)
     NewDoc.form = "科室日结"
     
     '画表
     Dim TableNotesRichTextItem As NotesRichTextItem
     Set TableNotesRichTextItem = NewDoc.CreateRichTextItem("SectionDairy")
     
     '设置表头格式
     Dim columnHeaderStyle As NotesRichTextStyle
     Set columnHeaderStyle = NewNoteSession.CreateRichTextStyle( )
     columnHeaderStyle.Bold = True
     columnHeaderStyle.FontSize = 20
     columnHeaderStyle.NotesFont = TableNotesRichTextItem.GetNotesFont("Arial", True)
     
     
     '设置列宽,5列
     Dim i As Integer
     Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
     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(0).Alignment = ALIGN_CENTER
     columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
    ' columnStyles(1).Alignment = ALIGN_CENTER
     columnStyles(2).RightMargin = 8 * RULER_ONE_CENTIMETER
    ' columnStyles(2).Alignment = ALIGN_CENTER
     columnStyles(3).RightMargin = 3 * RULER_ONE_CENTIMETER
    ' columnStyles(3).Alignment = ALIGN_CENTER
     columnStyles(4).RightMargin = 4 * RULER_ONE_CENTIMETER
    ' columnStyles(4).Alignment = ALIGN_CENTER
     
     '设置表头色彩
     Dim headerColor As NotesColorObject
     Dim dataColor As NotesColorObject
     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)
     
     Dim TableNotesRichTextNavigator As NotesRichTextNavigator
     Set TableNotesRichTextNavigator = TableNotesRichTextItem.CreateNavigator()
     TableNotesRichTextNavigator.FindLastElement RTELEM_TYPE_TABLE
     
     Dim TableNotesRichTextTable As NotesRichTextTable
     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 "工作事项"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "工作进展"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "上级批示"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "承办人"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "备注"
     TableNotesRichTextItem.EndInsert
     
     
     
     '遍历最新的日结文档,以填充表项 
     Dim DairyNotesView As NotesView
     Set DairyNotesView = CurrentDB.GetView("日结") 
     
     Dim DairyNotesViewNavigator As NotesViewNavigator
     Set DairyNotesViewNavigator = DairyNotesView.CreateViewNav
     Dim DairyNotesViewEntry As NotesViewEntry
     Set DairyNotesViewEntry = DairyNotesViewNavigator.GetFirstDocument
     
     
     '设置单元格式
     Dim dataStyle As NotesRichTextStyle
     Set dataStyle = NewNoteSession.CreateRichTextStyle()
     dataStyle.Bold = False
     dataStyle.FontSize = 10
     
     TableNotesRichTextNavigator.FindNextElement 
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     Call TableNotesRichTextItem.AppendStyle(dataStyle)
    ' Call TableNotesRichTextItem.AppendParagraphStyle(ALIGN_LEFT)
     TableNotesRichTextItem.EndInsert
     
     While Not DairyNotesViewEntry Is Nothing
      If Not Datevalue(DairyNotesViewEntry.Document.Created) = Today  Goto FinishOverToday
      
      Call TableNotesRichTextTable.AddRow(1)
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyProject")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyProgress")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyRemarks")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DariyTaskUndertaker")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DariyReserved")(0)
      TableNotesRichTextItem.EndInsert 
        
      Set DairyNotesViewEntry = DairyNotesViewNavigator.GetNextDocument(DairyNotesViewEntry)  
     Wend
      
    FinishOverToday:
     Call NewDoc.Save(True,True)
     Call NewUIWorkspace.ViewRefresh
     
    End Sub

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://cletgem.spaces.live.com/blog/cns!DC2AFAB4BD907791!2632.trak
    Weblogs that reference this entry
    • None