您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 使用VB+Excel制作工程报表1
VB操作Excel制作工程报表在工控项目中,报表的制作一直是困扰大部分现场工程师的一个难题,灵活多变的用户需求,复杂的数据表现格式,使得数据的组织十分麻烦。近日,笔者制作的一个项目用户需要的报表十分繁琐,呈现形式、打印方式等要求较高,这写都要求较高的编程技术,而Excel是处理数据报表的十分方便而强大的工具,如果我们将数据全部提交到Excel中去,在Excel中按照用户的意愿进行报表的设计和打印,则是十分轻松的工作。因此,笔者考虑使用VB将数据提交到Excel中,并操作它完成灵活的报表工作。首先,从数据库中查询需要的数据。本文以Access数据库为例,使用VB编程,通过ADO编程接口访问Access数据库,提取需要的数据后填充预定义的Excel表格。1,建立Access数据库。本文假设一个数据库SamDb,建立一个表Table,该表的字段设置如下图示:2,打开VB,在窗体上画上如下控件,在工程引用中引入ADO2.8库。为了示例的需要,加入插入数据一项,用来向数据表中添加示例数据。将Text控件的text属性设置为空字符串。添加Dbcon公共过程。PublicSubDbcon(ByValFilePahtAsString,ByValCmdSelectAsBoolean,ByValCmdStrAsString)Con.Openprovider=microsoft.jet.oledb.4.0;datasource=+FilePahtIfCmdSelectThenRst=Cmd.Execute(CmdStr)ElseCmd.Execute(CmdStr)EndIfEndSub该模块接受Sql命令字符串通过ADO执行命令,根据命令有没有返回值分别执行。在按钮“插入数据”的点击事件中中加入以下驱动代码:OnErrorGoToErr1DimcmdstrAsStringcmdstr=insertintoDataTable(温度,压力,流量,液位,pH,溶氧)values('&Text1.Text&','&Text2.Text&','&Text3.Text&','&Text4.Text&','&Text5.Text&','&Text6.Text&')CallDbcon(E:\创意\创作\实例\SamDb.mdb,False,cmdstr)Con.CloseSetCon=NothingSetCmd=NothingMsgBox成功插入数据!ExitSubErr1:MsgBox插入数据异常!运行程序,在文本框中输入数据,点击插入数据按钮,我们测试一下插入数据:成功插入数据,返回操作提示。同样的方法,添加几行数据到数据库中。3,在工程菜单的引用中加入microsoftExcelObjcetLibrary2.8的引用。在“关闭”按钮中添加一行代码:END表示程序结束执行。在“打开报表”按钮中添加如下代码:Label7.Visible=True‘表示显示该标签,提示用户Label7.Caption=正在生成报表,这可能花费几分钟时间……'定义Excel对象DimappAsNewExcel.ApplicationDimworkbookAsNewExcel.workbookDimworksheetAsNewExcel.worksheetDimchartAsNewExcel.chart'连接对象引用app.Caption=报表系统Setworkbook=app.Workbooks.Add'workbook.FullName=工控报表系统workbook.Worksheets(1).Deleteworkbook.Worksheets(1).DeleteSetworksheet=workbook.Worksheets(1)worksheet.Name=数据报表Setchart=workbook.Charts.Add(after:=app.Sheets(1))chart.Name=分析图表app.Sheets(1).Moveafter:=app.Sheets(2)'将数据库中的数据读入到Excel中去CallDbcon(E:\创意\创作\实例\SamDb.mdb,True,select*fromdatatable)DimnAsIntegern=4worksheet.Activateworksheet.Range(Cells(1,1),Cells(2,Rst.Fields.Count-1)).SelectSelection.MergeWithworksheet.Cells(1,1).Value=工控系统报表.Font.Bold=True.Font.Name=隶书.Font.Size=22EndWithworksheet.Cells(3,1).Value=温度worksheet.Cells(3,2).Value=压力worksheet.Cells(3,3).Value=流量worksheet.Cells(3,4).Value=液位worksheet.Cells(3,5).Value=pHworksheet.Cells(3,6).Value=溶氧worksheet.Range(Cells(3,1),Cells(3,6)).SelectWithSelection.Interior.ColorIndex=35.Pattern=xlSolidEndWithDoUntilRst.EOFworksheet.Cells(n,1).Value=CStr(Rst(温度))worksheet.Cells(n,2).Value=CStr(Rst(压力))worksheet.Cells(n,3).Value=CStr(Rst(流量))worksheet.Cells(n,4).Value=CStr(Rst(液位))worksheet.Cells(n,5).Value=CStr(Rst(pH))worksheet.Cells(n,6).Value=CStr(Rst(溶氧))Rst.MoveNextn=n+1Loop'显示Excel对象worksheet.Range(Cells(1,1),Cells(n-1,Rst.Fields.Count-1)).SelectWithSelection.HorizontalAlignment=xlCenter.VerticalAlignment=xlCenter.WrapText=False.Orientation=0.AddIndent=False.IndentLevel=0.ShrinkToFit=False.ReadingOrder=xlContextEndWithSelection.Borders(xlDiagonalDown).LineStyle=xlNoneSelection.Borders(xlDiagonalUp).LineStyle=xlNoneWithSelection.Borders(xlEdgeLeft).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithWithSelection.Borders(xlEdgeTop).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithWithSelection.Borders(xlEdgeBottom).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithWithSelection.Borders(xlEdgeRight).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithWithSelection.Borders(xlInsideVertical).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithWithSelection.Borders(xlInsideHorizontal).LineStyle=xlContinuous.Weight=xlThin.ColorIndex=xlAutomaticEndWithDimStrAsStringStr=:$&Chr(Rst.Fields.Count-1+64)&$&CStr(n-1)worksheet.PageSetup.PrintArea=$A$1&StrWithworksheet.PageSetup.LeftHeader=报表:&A日期:&D.CenterHeader=.RightHeader=.LeftFooter=.CenterFooter=.RightFooter=第&P页,共&N页.LeftMargin=Application.InchesToPoints(0.748031496062992).RightMargin=Application.InchesToPoints(0.748031496062992).TopMargin=Application.InchesToPoints(0.984251968503937).BottomMargin=Application.InchesToPoints(0.984251968503937).HeaderMargin=Application.InchesToPoints(0.511811023622047).FooterMargin=Application.InchesToPoints(0.511811023622047).PrintHeadings=False.PrintGridlines=False.PrintComments=xlPrintNoComments.PrintQuality=300.CenterHorizontally=True.CenterVertically=False.Orientation=xlPortrait.Draft=False.PaperSize=xlPaperA4.FirstPageNumber=xlAutomatic.Order=xlDownThenOver.BlackAndWhite=False.Zoom=100.PrintErrors=xlPrintErrorsDisplayedEndWith'worksheet.PrintPreviewLabel7.Visible=Falseapp.Visible=True'app.CommandBars(关闭).Enabled=Falseapp.ActiveSheet.PrintPreview‘切换Excel到打印预览模式至此,将数据库中的数据读入到Excel表格中,并设置Excel报表格式,返回其打印预览状态,只需简单设置打印程序,即可打印出精美的报表。用户可以自行设置相关格式,使打印输出符合用户的要求。
本文标题:使用VB+Excel制作工程报表1
链接地址:https://www.777doc.com/doc-3879547 .html