| gem's profileWaiting…BlogLists | Help |
|
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 TrackbacksThe trackback URL for this entry is: http://cletgem.spaces.live.com/blog/cns!DC2AFAB4BD907791!2632.trak Weblogs that reference this entry
|
|
|