vb导出excel报表

合集下载

vb 从数据库和gridview导出数据到excel

vb 从数据库和gridview导出数据到excel

'从数据集里导出数据Dim sql As Stringsql = "SELECT FIRST 20 * FROM student"claimset = sqlfun.Dataset(sql)Dim xlApp As New Excel.Application()Dim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim rowIndex, colIndex As IntegerrowIndex = 1colIndex = 0xlBook = xlApp.Workbooks().AddxlSheet = CType(xlBook.Worksheets("sheet1"), Excel.Worksheet)Dim Table As New DataSet()Table = claimset'将所得到的表的列名,赋值给单元格Dim Col As DataColumnDim Row As DataRowFor Each Col In claimset.Tables(0).ColumnscolIndex = colIndex + 1xlApp.Cells(1, colIndex) = Col.ColumnNameNext'得到的表所有行,赋值给单元格For Each Row In claimset.Tables(0).RowsrowIndex = rowIndex + 1colIndex = 0For Each Col In claimset.Tables(0).ColumnscolIndex = colIndex + 1xlApp.Cells(rowIndex, colIndex) = Row(Col.ColumnName)NextNext'从gridview导出数据Response.ClearContent()Response.Buffer = TrueResponse.Charset = "GB2312"Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls") Response.ContentType = "application/excel"Dim sw As New StringWriter()Dim htw As New HtmlTextWriter(sw)GridView1.RenderControl(htw)Response.Write(sw.ToString())Response.End()Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) '处理'GridView' 必需置于有 runat=server 的表单标记之中End Sub。

vb导出EXCEL设计、打印控制属性方法汇总

vb导出EXCEL设计、打印控制属性方法汇总

基于VB和EXCEL的通用数据库报表设计常熟高等专科学校钱忆平215500摘要本文讨论了一种基于VB和EXCEL的通用数据库报表设计方案,并结合开发实例,给出了VB调用ACESS数据库实现通用数据库报表设计的程序实现方法。

关键词数据库报表VB EXCEL1.引言在各种数据库管理系统中,经常涉及到数据信息的分析、统计,最后将结果信息制作成报表汇总输出。

在用Visual Basic设计的数据库管理系统中,报表的设计方法通常有两种。

一是用VB自身的数据环境设计器(Data Environment Designer)和数据库报表设计器(Report Designer)实现;二是采用第三方的ActiveX报表控件,在此基础上直接进行设计。

但是,两种报表设计方法都存在缺点。

前者报表设计方法较为烦琐,在设计一些具有多项汇总的数据报表时,功能不足,报表的格式控制较为困难。

后者的报表设计方法较为简便,有多种报表格式可以套用,但用户制作报表的要求和格式各不相同,难以在报表的格式和功能上真正满足用户的要求。

所以,有必要寻找一种灵活方便的、能满足用户需求的、便于程序控制的报表设计方法,解决报表设计中存在的问题。

利用VB和EXCEL进行通用数据库报表设计是一种有效的解决方案。

2.通用数据库报表设计的一般方法VB和EXCEL都是微软公司的典型产品,VB有较强的数据管理、控制和应用程序开发能力;EXCEL是一个电子表格软件,具有强大的数据处理和格式输出功能,能根据用户的要求灵活、方便地制作出各种格式的数据报表。

EXCEL有自身的对象库,能够在VB中直接调用。

通过在VB中建立EXCEL的APPLICATION对象及相关子对象,用VB对数据库数据进行管理和调用,实现数据库数据从VB到EXCEL的直接输出,然后由EXCEL对数据格式化,实现通用数据库报表输出功能。

通用数据库报表设计的流程框图如图1。

3.实现步骤(1)用ADO数据接口与数据库建立连接众所周知,要实现对数据库数据的管理和调用,可以用多种不同的编程语言和不同的数据库管理系统完成,各种编程语言对数据库系统的数据调用方法也有多种,有DAO、RDO、ADO等。

VB6.0导出excel方法源代码

VB6.0导出excel方法源代码

VB6.0导出excel⽅法源代码VB6.0 导出excel ⽅法源代码⽅法⼀:⽤Msflexgrid的Textmatrix属性取Msflexgrid中每⼀个单元格的内容,然后填到Excel表中,或者写成CSV格式⽅法⼆:直接把查询结果导出成Excel⼯作表Public Sub Export(formname As Form, flexgridname As String)Dim xlApp As Object 'Excel.ApplicationDim xlBook As Object 'Excel.WorkbookDim xlSheet As Object 'Excel.WorksheetScreen.MousePointer = vbHourglassOn Error GoTo Err_ProcSet xlApp = CreateObject("Excel.Application")Set xlBook = xlApp.Workbooks.AddSet xlSheet = xlBook.Worksheets(1)'Begin to fill data to sheetDim i As LongDim j As IntegerDim k As IntegerWith formname.Controls(flexgridname)For i = 0 To .rows - 1k = 0For j = 0 To .Cols - 1If .colwidth(j) > 20 Or .colwidth(j) < 0 Thenk = k + 1xlSheet.Cells(i + 1, k).Value = "'" & .TextMatrix(i, j)End IfNext jNext iEnd WithxlApp.Visible = TrueScreen.MousePointer = vbDefaultExit SubErr_Proc:Screen.MousePointer = vbDefaultMsgBox "请确认您的电脑已安装Excel!", vbExclamation,"提⽰"End Sub===================================Public Function ExporToExcel(strOpen As String)'*********************************************************'* 名称:ExporToExcel'* 功能:导出数据到EXCEL'* ⽤法:ExporToExcel(sql查询字符串)'*********************************************************Dim Rs_Data As New ADODB.RecordsetDim Irowcount As IntegerDim Icolcount As IntegerDim cn As New ADODB.ConnectionDim xlApp As New Excel.ApplicationDim xlBook As Excel.WorkbookDim xlSheet As Excel.WorksheetDim xlQuery As Excel.QueryTableWith Rs_DataIf .State = adStateOpen Then.CloseEnd If.ActiveConnection = "provider=msdasql;DRIVER=Microsoft Visual FoxPro Driver;UID=;Deleted=yes;Null=no;Collate=Machine;BackgroundFetch=no;Exclusive=No;SourceType=DBF; SourceDB=D:\DBF;".CursorLocation = adUseClient.CursorType = adOpenStatic.Source = strOpen.OpenEnd WithWith Rs_DataIf .RecordCount < 1 ThenMsgBox ("没有记录!")Exit FunctionEnd If'记录总数Irowcount = .RecordCount'字段总数Icolcount = .Fields.CountEnd WithSet xlApp = CreateObject("Excel.Application")Set xlBook = NothingSet xlSheet = NothingSet xlBook = xlApp.Workbooks().AddSet xlSheet = xlBook.Worksheets("sheet1")xlApp.Visible = True'添加查询语句,导⼊EXCEL数据Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1")) xlQuery.FieldNames = True '显⽰字段名xlQuery.RefreshxlApp.Application.Visible = TrueSet xlApp = Nothing '"交还控制给ExcelSet xlBook = NothingSet xlSheet = NothingEnd Function=============================='*********************************************************'* 名称:OutDataToExcel'* 功能:将MsFlexGrid控件中显⽰的内容输出到Excel表格中进⾏打印'*********************************************************Public Sub OutDataToExcel(Flex As MSFlexGrid) '导出⾄ExcelDim s As StringDim i As IntegerDim j As IntegerDim k As IntegerOn Error GoTo ErtMe.MousePointer = 11Dim Excelapp As Excel.ApplicationSet Excelapp = New Excel.ApplicationOn Error Resume NextDoEventsExcelapp.SheetsInNewWorkbook = 1Excelapp.Workbooks.AddExcelapp.ActiveSheet.Cells(1, 3) = sExcelapp.Range("C1").SelectExcelapp.Selection.Font.FontStyle = "Bold"Excelapp.Selection.Font.Size = 16With Flexk = .RowsFor i = 0 To k - 1For j = 0 To .Cols - 1DoEventsExcelapp.ActiveSheet.Cells(3 + i, j + 1) = "'" & .TextMatrix(i, j)Next jNext iEnd WithMe.MousePointer = 0Excelapp.Visible = TrueExcelapp.Sheets.PrintPreviewErt:If Not (Excelapp Is Nothing) ThenExcelapp.QuitEnd IfEnd Sub⼀个按钮,点击出现对话框(对话框控件已经有),在硬盘⾥⾯查找excel⽂件(当然,后缀名是xls了),找到⽬标excel⽂件后,该excel⽂件⾥⾯是⼀些数据,点击确定,就可以把excel⾥⾯的内容保存到MSFlexGrid控件⾥⾯了还有⼀个,按钮,点击后出现对话框,可以保存MSFlexGrid⾥⾯的东西到⼀个excel⾥⾯谢谢⼤家了⽤CommonDialog可以解决选定打开.xls⽂件问题然后就是读取进去哈哈保存代码如下'添加command控件⼀个MSFlexGrid控件⼀个Private Sub Command1_Click()On Error Resume NextDim fileadd As StringCommonDialog1.ShowOpenCommonDialog1.Filter = "xls⽂件(*.xls)|*.xls" '选择你要的⽂件fileadd = CommonDialog1.FileNameMSHFlexGrid1.Redraw = False '关闭表格重画,加快运⾏速度Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open(fileadd) '打开已经存在的EXCEL⼯件簿⽂件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlsheet = xlBook.Worksheets("Sheet1") '设置活动⼯作表For R = 0 To MSHFlexGrid1.Rows - 1 '⾏循环For C = 0 To MSHFlexGrid1.Cols - 1 '列循环MSHFlexGrid1.Row = RMSHFlexGrid1.Col = CxlBook.Worksheets("Sheet1").Cells(R + 1, C + 1) = MSHFlexGrid1.Text '保存到EXCEL Next C Next RMSHFlexGrid1.Redraw = TruexlApp.DisplayAlerts = False '不进⾏安全提⽰'Set xlsheet = Nothing'Set xlBook = Nothing'xlApp.Quit'Set xlApp = NothingEnd Sub。

VB导出Excel报表

VB导出Excel报表

VB导出Excel报表VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、 VB读写EXCEL表:能获取到表的行数的代码:edRange.Rows.CountVB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

通过VBA实现Excel数据导入导出的方法

通过VBA实现Excel数据导入导出的方法

通过VBA实现Excel数据导入导出的方法Excel是一款功能强大的电子表格软件,在处理和分析大量数据时非常实用。

VBA(Visual Basic for Applications)是一种编程语言,可以用来自动化Excel任务,例如数据导入和导出。

本文将介绍使用VBA实现Excel数据导入和导出的方法。

首先,我们将讨论如何使用VBA来导入数据到Excel。

数据可以来自各种来源,如文本文件、数据库或其他Excel工作簿。

下面是一个示例,演示如何从文本文件导入数据:```vbaSub ImportData()Dim filePath As StringDim ws As WorksheetDim rng As Range' 获取要导入的文件路径filePath = Application.GetOpenFilename("Text Files (*.txt), *.txt")' 检查用户是否选择了文件If filePath <> "False" Then' 选择要导入数据的工作表Set ws = ThisWorkbook.Sheets("数据")' 选择要导入数据的起始单元格Set rng = ws.Range("A1")' 清空起始单元格及其之后的数据ws.Range(rng, ws.Cells(ws.Rows.Count,rng.Column)).ClearContents' 使用文本导入向导导入数据With ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=rng).TextFileParseType = xlDelimited.TextFileCommaDelimiter = True.RefreshEnd With' 删除导入数据时自动创建的查询表ws.QueryTables(1).DeleteMsgBox "数据导入完成。

vbsqldatagrid数据导出到excel

vbsqldatagrid数据导出到excel

vbsqldatagrid数据导出到excel你新建一数据工程,在其窗体中添加ADODC数据控件和DATAGRID控件。

添加COMMAND控件,将按钮控件的属性TABINDEX设置为0使用以下代码,可将在DATAGRID控件显示的数据导出到EXCEL,将下列代码中的数据库连接语句和表名改为你自己的数据库和表名:Option ExplicitDim i, j, k As IntegerDim strConn As StringDim pubConn As New adodb.ConnectionDim rsTable As New adodb.RecordsetDim strSQL As StringDim xlapp As VariantDim xlBook As VariantDim xlSHEET As VariantPrivate Sub Command1_Click()Set xlapp = CreateObject("excel.application")Set xlBook = xlapp.workbooks.AddSet xlSHEET = xlBook.worksheets(1)xlapp.Visible = TrueOn Error Resume NextIf Err.Number <> 0 Then Set xlapp = CreateObject("Excel.Application")Set xlBook = xlapp.workbooks.AddSet xlSHEET = xlBook.ActiveSheetFor k = 1 To DataGrid1.Columns.CountxlSHEET.Cells(1, k) = DataGrid1.Columns(k - 1).CaptionNext kFor i = 1 To Adodc1.Recordset.RecordCount + 1For j = 0 To DataGrid1.Columns.CountxlSHEET.Cells(i + 1, j + 1) = Adodc1.Recordset(j) 'Next jAdodc1.Recordset.MoveNextNext iEnd SubPrivate Sub Form_Load()strSQL = "select * from mdlk_sj where 批号='D012'"Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\hxrkgl.mdb;Persist Security Info=False"Adodc1.RecordSource = strSQLAdodc1.RefreshEnd Sub。

VB中使用EXCEL输出

VB中使用EXCEL输出

Private Sub cmdSwatch_Click()Dim xls As excel.ApplicationDim xlbook As excel.Workbook'On Error GoTo exlErrorDim i As IntegerIf Dir(Text1.Text) <> "" Then '此目录下如有同名文件给出提示,并作相应处理If MsgBox("文件已存在,是否覆盖!", vbYesNo + vbQuestion, "另存为工程造价文件") = vbNo Then Exit SubElseKill (Text1.Text) '删除文件End IfEnd If'************打开工作表***************Set xls = New excel.Applicationxls.Visible = TrueSet xlbook = xls.Workbooks.Add'*********************************For i = 0 To 14If Check2(i).Value = vbChecked ThenSelect Case iCase 8ToExcelJDanJiaSum.ToExcelJDanJiaSum xlbook, xlsCase 9ToExcelADanJiaSum.ToExcelADanJiaSum xlbook, xlsCase 10ToExcelCailiao.ToExcelCailiao xlbook, xlsCase 11ToExcelTsf.ToExcelTsf xlbook, xlsCase 12ToExcelZgcl.ToExcelZgcl xlbook, xlsEnd SelectEnd IfNextFor i = 0 To 6If Check3(i).Value = vbChecked ThenSelect Case iCase 0ToExcelMan.ToExcelMan xlbook, xlsCase 1ToExcelFSD_CL.ToExcelFSD_CL xlbook, xls Case 2ToExcelHNT.ToExcelHNT xlbook, xlsCase 3ToExcelZsf.ToExcelZsf xlbook, xlsCase 4ToExcelJingChang.ToExcelJingChang xlbook, xls Case 5ToExcelJDanJia.ToExcelJDanJia xlbook, xls Case 6ToExcelADanJia.ToExcelADanJia xlbook, xls End SelectEnd IfNextxlbook.SaveAs Text1.Text '保存EXCEL文件'***************************关闭EXCEL对象*******************If Check1.Value = vbChecked Thenxlbook.Closexls.QuitEnd IfSet xlbook = NothingSet xls = NothingExit Sub'exlError:' MsgBox Err.Description, vbOKOnly + vbCritical, "警告"End SubOption ExplicitPublic Sub ToExcelZgcl(ByRef xlbook, ByRef xls) '输出总工程量Dim con As New ADODB.ConnectionDim rst_gcl As New ADODB.RecordsetDim rst_qm As New ADODB.Recordset'**************************连接数据库****************************************con.CursorLocation = adUseClientcon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strConnection & ";Persist Security Info=False"con.Openrst_gcl.Open "zonggcl", con, adOpenKeyset, adLockOptimistic, adCmdTable '打开工程量汇总表If Not (rst_gcl.BOF And rst_gcl.EOF) Thenrst_gcl.MoveFirstEnd Ifrst_qm.Open "qianming", con, adOpenKeyset, adLockOptimistic, adCmdTable '打开签名表rst_qm.MoveFirst'****************************工作表初使化*********************************** Dim xlsheet As excel.WorksheetSet xlsheet = xlbook.Sheets.Add '添加一张工作表 = "工程量汇总"xls.ActiveSheet.PageSetup.Orientation = xlLandscape '纸张设置为横向xlsheet.Columns("a:j").Font.Size = 10xlsheet.Columns("a:j").VerticalAlignment = xlVAlignCenter '垂直居中xlsheet.Columns(1).HorizontalAlignment = xlHAlignCenter '1列水平居中对齐xlsheet.Columns(1).ColumnWidth = 8xlsheet.Columns(2).HorizontalAlignment = xlHAlignLeftxlsheet.Columns(2).ColumnWidth = 26xlsheet.Columns("c:j").HorizontalAlignment = xlHAlignRightxlsheet.Columns("c:j").ColumnWidth = 10xlsheet.Columns("c:j").NumberFormatLocal = "0.00_ " '3到10列保留两位小数'***************************写入标头************************************* xlsheet.Rows(1).RowHeight = 40xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, 10)).MergeCells = Truexlsheet.Cells(1, 1).Value = "工程量汇总"xlsheet.Cells(1, 1).Font.Size = 14xlsheet.Cells(1, 1).Font.Bold = Truexlsheet.Rows(2).RowHeight = 18xlsheet.Rows(2).HorizontalAlignment = xlHAlignCenterxlsheet.Cells(2, 1).Value = "序号"xlsheet.Cells(2, 2).Value = "工程项目及名称"xlsheet.Cells(2, 3).Value = "土方开挖(m3)"xlsheet.Cells(2, 4).Value = "石方开挖(m3)"xlsheet.Cells(2, 5).Value = "土方回填(m3)"xlsheet.Cells(2, 6).Value = "洞挖石方(m3)"xlsheet.Cells(2, 7).Value = "砼浇筑(m3)"xlsheet.Cells(2, 8).Value = "钢筋制安(t)"xlsheet.Cells(2, 9).Value = "砌石工程(m3)"xlsheet.Cells(2, 10).Value = "灌浆工程(m)"xls.ActiveSheet.PageSetup.PrintTitleRows = "$1:$2" '固定表头'***************************写入内容*************************Dim i As Integeri = 3 'i控制行Dim j As Integer 'j控制列Dim countpage As Integercountpage = 0 '控制页Do While Not rst_gcl.EOFxlsheet.Rows(i).RowHeight = 18 '控制行高For j = 1 To 10xlsheet.Cells(i, j) = rst_gcl.Fields(j) '将工程理库中的一条记录的第一个字段写入工作表中Next'每18行为一页,如果数据超出一页时进行特殊处理If i > 18 Thenxls.ActiveWindow.SmallScroll Down:=1 '活动窗口内容向下滚动1行End IfIf i Mod 18 = 0 ThenIf countpage = 0 Thenxlsheet.Range(xlsheet.Cells(2, 1), xlsheet.Cells(i, 10)).Borders.LineStyle = xlContinuous '首页加边框Elsexlsheet.Range(xlsheet.Cells(23 + (countpage - 1) * 18, 1), xlsheet.Cells(i, 10)).Borders.LineStyle = xlContinuous '中间页加边框End Ifi = i + 2 '加一条空行'******************************在非尾页写入签名**************************************xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(64) & rst_qm.Fields(0)xlsheet.Rows(i).RowHeight = 30i = i + 1 '换行xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(50) & rst_qm.Fields(1)xlsheet.Rows(i).RowHeight = 15i = i + 1xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(55) & rst_qm.Fields(2)xlsheet.Rows(i).RowHeight = 30'****************************************************************************xlsheet.HPageBreaks.Add (xlsheet.Rows(i + 1)) '添加分页符countpage = countpage + 1 '换页End Ifi = i + 1rst_gcl.MoveNextLoopxlsheet.Range(xlsheet.Cells(23 + (countpage - 1) * 18, 1), xlsheet.Cells(i - 1, 10)).Borders.LineStyle = xlContinuous '尾页加边框i = i + 1 '加入一空行'*********************************在尾页加签名*************************************** xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(64) & rst_qm.Fields(0)xlsheet.Rows(i).RowHeight = 30i = i + 1 '换行xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(50) & rst_qm.Fields(1)xlsheet.Rows(i).RowHeight = 15i = i + 1xlsheet.Range(xlsheet.Cells(i, 1), xlsheet.Cells(i, 10)).MergeCells = Truexlsheet.Cells(i, 1).Value = Space(55) & rst_qm.Fields(2)xlsheet.Rows(i).RowHeight = 30'*********************************************************************************** xls.ActiveWindow.View = xlPageBreakPreview '分页预览xls.ActiveWindow.Zoom = 100If con.State = adStateOpen Thenrst_gcl.Closerst_qm.CloseSet rst_gcl = NothingSet rst_qm = Nothingcon.CloseSet con = NothingEnd IfSet xlsheet = NothingEnd SubOption ExplicitPublic Sub ToExcelTsf(ByRef xlbook, ByRef xls)Dim con As New ADODB.ConnectionDim rst_tsf As New ADODB.RecordsetDim rst_qm As New ADODB.Recordset'**********************************连接数据库************************con.CursorLocation = adUseClientcon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strConnection & ";Persist Security Info=False"con.Openrst_tsf.Open "tdefeiyong", con, adOpenKeyset, adLockOptimistic, adCmdTableIf Not (rst_tsf.BOF And rst_tsf.EOF) Thenrst_tsf.MoveFirstEnd Ifrst_qm.Open "qianming", con, adOpenKeyset, adLockOptimistic, adCmdTablerst_qm.MoveFirst'*********************************工作表初使化**********************************Dim xlsheet As excel.WorksheetSet xlsheet = xlbook.Sheets.Add = "机械台时、组时费汇总表"xlsheet.Columns(1).ColumnWidth = 5xlsheet.Columns(2).ColumnWidth = 20xlsheet.Columns(3).ColumnWidth = 7xlsheet.Columns(4).ColumnWidth = 7xlsheet.Columns(5).ColumnWidth = 7xlsheet.Columns(6).ColumnWidth = 7xlsheet.Columns(7).ColumnWidth = 7xlsheet.Columns(8).ColumnWidth = 7xlsheet.Columns(9).ColumnWidth = 7xlsheet.Columns("A:I").Font.Size = 9xlsheet.Columns("A:I").VerticalAlignment = xlVAlignCenter '垂直居中xlsheet.Columns(1).HorizontalAlignment = xlHAlignCenter '1列水平居中对齐xlsheet.Columns(2).HorizontalAlignment = xlHAlignLeft '2列水平左对齐'******************************写入标头************************************ xlsheet.Rows(1).RowHeight = 35xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(1, 9)).MergeCells = Truexlsheet.Cells(1, 1).Font.Size = 14xlsheet.Cells(1, 1).Font.Bold = Truexlsheet.Cells(1, 1).Value = "机械台时、组时费汇总表"xlsheet.Cells(2, 9).Value = "单位:元"xlsheet.Range(xlsheet.Cells(3, 1), xlsheet.Cells(5, 1)).MergeCells = Truexlsheet.Cells(3, 1).Value = "编号"xlsheet.Range(xlsheet.Cells(3, 2), xlsheet.Cells(5, 2)).MergeCells = Truexlsheet.Cells(3, 2).Value = "机械名称"xlsheet.Range(xlsheet.Cells(3, 3), xlsheet.Cells(5, 3)).MergeCells = Truexlsheet.Cells(3, 3).Value = "台时费"xlsheet.Range(xlsheet.Cells(3, 4), xlsheet.Cells(3, 9)).MergeCells = Truexlsheet.Cells(3, 4).Value = "其中"xlsheet.Range(xlsheet.Cells(3, 3), xlsheet.Cells(5, 3)).MergeCells = Truexlsheet.Cells(3, 3).Value = "台时费"xlsheet.Range(xlsheet.Cells(4, 4), xlsheet.Cells(5, 4)).MergeCells = Truexlsheet.Cells(4, 4).Value = "折旧费"xlsheet.Range(xlsheet.Cells(4, 5), xlsheet.Cells(5, 5)).MergeCells = Truexlsheet.Cells(4, 5).Value = "修理替换费"xlsheet.Range(xlsheet.Cells(4, 6), xlsheet.Cells(5, 6)).MergeCells = Truexlsheet.Cells(4, 6).Value = "安拆费"xlsheet.Range(xlsheet.Cells(4, 7), xlsheet.Cells(5, 7)).MergeCells = Truexlsheet.Cells(4, 7).Value = "人工费"xlsheet.Range(xlsheet.Cells(4, 8), xlsheet.Cells(5, 8)).MergeCells = Truexlsheet.Cells(4, 8).Value = "燃料费"xlsheet.Range(xlsheet.Cells(4, 9), xlsheet.Cells(5, 9)).MergeCells = Truexlsheet.Cells(4, 9).Value = "其他费"xlsheet.Range(xlsheet.Cells(1, 1), xlsheet.Cells(5, 9)).HorizontalAlignment = xlHAlignCenterxls.ActiveSheet.PageSetup.PrintTitleRows = "$1:$5" '固定表头'****************************************写入内容************************************* Dim i As Integeri = 6Do While Not rst_tsf.EOFxlsheet.Cells(i, 1).Value = rst_tsf.Fields("nn")xlsheet.Cells(i, 2).Value = rst_tsf.Fields("name")xlsheet.Cells(i, 3).Value = rst_tsf.Fields("price")xlsheet.Cells(i, 4).Value = rst_tsf.Fields("zhejiu")xlsheet.Cells(i, 5).Value = rst_tsf.Fields("xiuli")xlsheet.Cells(i, 6).Value = rst_tsf.Fields("anchai")xlsheet.Cells(i, 7).Value = rst_tsf.Fields("rengong")xlsheet.Cells(i, 8).Value = rst_tsf.Fields("dongli")xlsheet.Cells(i, 9).Value = rst_tsf.Fields("qita")If i > 22 Thenxls.ActiveWindow.SmallScroll Down:=1 '活动窗口内容向下滚动1行End Ifi = i + 1rst_tsf.MoveNextLoopxlsheet.Range(xlsheet.Cells(6, 3), xlsheet.Cells(i - 1, 9)).NumberFormatLocal = "0.00_ " '保留两位小数'*********************************添加边框********************************** xlsheet.Range(xlsheet.Cells(3, 1), xlsheet.Cells(i - 1, 9)).Borders.LineStyle = xlContinuous '****************************************************************************** xls.ActiveSheet.PageSetup.BottomMargin = Application.InchesToPoints(2.2) '设置下侧面边距xls.ActiveSheet.PageSetup.FooterMargin = Application.InchesToPoints(1) '设置页脚高xls.ActiveSheet.PageSetup.CenterFooter = "&10" & rst_qm.Fields(0) & Chr(10) & Chr(10) &rst_qm.Fields(1) & Chr(10) & Chr(10) & rst_qm.Fields(2) '加页脚xls.ActiveWindow.View = xlPageBreakPreview '分页预览xls.ActiveWindow.Zoom = 100'***************************关闭记录集******************* If con.State = adStateOpen Thenrst_tsf.Closerst_qm.CloseSet rst_tsf = NothingSet rst_qm = Nothingcon.CloseSet con = NothingEnd IfSet xlsheet = NothingEnd Sub精彩的后续作者Blog:/mi6236/。

VB数据导出EXCEL

VB数据导出EXCEL
VB数据导出EXCEL之重要属性在实际编程中,我的客户经常要求我将数据导出到EXCEL中的,而且还在加一个格式啊,什么的...所以积累的一点属性,因为EXCEL的属性在VB的MSDN中很难找到几个,这些都是我在实践中得到的,今天算是做了个总结,以后忘了,也有地方可以找了Dim?Appexcel?As?Excel.Application?'定义一个EXCEL对象Dim?Wbexcel?As?Excel.Workbook??'定义一个EXCEL实例Dim?wsexcel?As?Excel.Worksheet?'定义一个工作表Set?Appexcel?=?CreateObject("excel.application"Appexcel.WindowState?=?xlMaximized?'最大化显示Appexcel.Caption?=?strTitle??'标题Set?Wbexcel?=?s.AddAppexcel.Visible?=?TrueSet?wsexcel?=?Appexcel.Sheets(1)'设置左边距和右边距wsexcel.PageSetup.LeftMargin?=?20wsexcel.PageSetup.RightMargin?=?0.7wsexcel.Cells(1,?1).Value?=?"AAAA"?'单元格的值wsexcel.Range("A11".MergeCells?=?True???'是否合并单元格wsexcel.Range("A11".Font.Size?=?24?????'字体大小wsexcel.Range("A11".Font.FontStyle?=?"宋体" '字体wsexcel.Range("A11".Font.Bold?=?True?'粗体wsexcel.Range("B2:E2".Borders(xlBottom).Weight?=?xlThin??'下划线wsexcel.Range("B2:E2".Borders(xlTop).Weight?=?xlThin?'上划线'水平居中和垂直居中wsexcel.Range("A2:A4".HorizontalAlignment?=?xlCenterwsexcel.Range("A2:A4".VerticalAlignment?=?xlCenterwsexcel.Range("A1".BorderAround?(1)?'单元格边框wsexcel.Cells(2,?1).ColumnWidth?=?14?'设置列宽wsexcel.Columns("D".NumberFormat?=?0?'设置列的显示格式,数字以文本格式显示,(整列修改用Columns,单个单元格修改用Range)wsexcel.Columns("E".Hidden?=?True??'列隐藏wsexcel.Range("E5".WrapText?=?True??'文本自动换行
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB 是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、VB读写EXCEL表:能获取到表的行数的代码:edRange.Rows.CountVB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlSheet.Cells(row, col) =值'给单元格(row,col)赋值xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

但在EXCEL 操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。

形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。

二、EXCEL的宏功能:EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。

其中,EXCEL有两个自动宏:一个是启动宏(SubAuto_Open()),另一个是关闭宏(Sub Auto_Close())。

它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。

但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。

Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open(App.Path & "\文件名.xls") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("sheel1") '设置活动工作表,sheet1表示表名,可以使用字符型变量代替。

xlSheet.Activate '激活工作表,让它处于前台活动中。

xlBook.RunAutoMacros (xlAutoOpen) '运行自动开启宏Macro1(),在EXCEL中加入以下宏'Sub auto_open() '这是VBA中的自动打开时运行的宏' 您要宏自动运行的程序,比如可以call其它的宏,这样VB在打开EXCEL时,使用上面的语句就可以先运行这个宏'End SubxlSheet.Cells.Item(行数,列数) =值'给EXCEL对象中的表的单元格附值。

xlSheet.Rows("7:7").Select '选定EXCEL表的第7行xlApp.Selection.Delete shift:=xlUp '删除选定的行xlSheet.Rows(7).Insert '在第7行处插入一行ActiveSheet.PageSetup.CenterHeader ="页眉内容" '给页眉附值xlSheet.Range("f7:h7").Select '选定f7:h7之间的单元格,下面的程序是把它们合并。

Application.CutCopyMode = FalseWith xlApp.Selection.HorizontalAlignment = xlGeneral.V erticalAlignment = xlCenter.WrapText = False.Orientation = 0.AddIndent = False.IndentLevel = 0.ShrinkToFit = False.ReadingOrder = xlContext.MergeCells = TrueEnd With如果有自己不会的可以用录制宏的办法,用手功操作一次你要的功能,然后看录下的宏程序,VBA中的宏程序几乎所有的宏在VB中都可以直接使用,关键是对象一定要搞清楚。

VB操作EXCEL的介绍全面控制Excel首先创建Excel 对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Application1) 显示当前窗口:ExcelID.Visible := True;2) 更改Excel 标题栏:ExcelID.Caption := '应用程序调用Microsoft Excel';3) 添加新工作簿:ExcelID.WorkBooks.Add;4) 打开已存在的工作簿:ExcelID.WorkBooks.Open( 'C:ExcelDemo.xls' );5) 设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets[ 'Sheet2' ].Activate;6) 给单元格赋值:ExcelID.Cells[1,4].V alue := '第一行第四列';7) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米9) 在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;参考代码:ActiveSheet.HPageBreaks(1).Location = Range("A22")10) 在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[4].PageBreak := 0;11) 指定边框线宽度:ExcelID.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;1-左2-右3-顶4-底5-斜( ) 6-斜( / )12) 清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:ExcelID.ActiveSheet.Rows[1] := '隶书';ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelID.ActiveSheet.Rows[1].Font.Bold := True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;14) 进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader := '报表演示';b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter := '第&P页';c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterV ertically := 2/0.035;k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;15) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelID.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteSpecial;16) 插入一行或一列:a. ExcelID.ActiveSheet.Rows[2].Insert;b. ExcelID.ActiveSheet.Columns[1].Insert;17) 删除一行或一列:a. ExcelID.ActiveSheet.Rows[2].Delete;b. ExcelID.ActiveSheet.Columns[1].Delete;18) 打印预览工作表:ExcelID.ActiveSheet.PrintPreview;19) 打印输出工作表:ExcelID.ActiveSheet.PrintOut;20) 工作表保存:If not ExcelID.ActiveWorkBook.Saved thenExcelID.ActiveSheet.PrintPreviewEnd if21) 工作表另存为:ExcelID.SaveAs( 'C:ExcelDemo1.xls' );22) 放弃存盘:ExcelID.ActiveWorkBook.Saved := True;23) 关闭工作簿:ExcelID.WorkBooks.Close;24) 退出Excel:ExcelID.Quit;25) 设置工作表密码:ExcelID.ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True 26) EXCEL的显示方式为最大化ExcelID.Application.WindowState = xlMaximized27) 工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState = xlMaximized28) 设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook = 329) '关闭时是否提示保存(true 保存;false 不保存)ExcelID.DisplayAlerts = False30) 设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow = 1ExcelID.ActiveWindow.FreezePanes = True31) 设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"32) 设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""33) 设置显示方式(分页方式显示)ExcelID.ActiveWindow.View = xlPageBreakPreview34) 设置显示比例ExcelID.ActiveWindow.Zoom = 10035) 让Excel 响应DDE 请求Ex.Application.IgnoreRemoteRequests = False用VB操作EXCEL以下是代码片段:Private Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application ’声明对象变量Me.MousePointer = 11 ’改变鼠标样式Set objExl = New Excel.Application ’初始化对象变量objExl.SheetsInNewWorkbook = 1 ’将新建的工作薄数量设为1objExl.Workbooks.Add ’增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name = "book1" ’修改工作薄名称objExl.Sheets.Add , objExl.Sheets("book1") ‘增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name = "book2"objExl.Sheets.Add , objExl.Sheets("book2") ‘增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name = "book3"objExl.Sheets("book1").Select ’选中工作薄<book1>F or i = 1 To 50 ’循环写入数据For j = 1 To 5If i = 1 ThenobjExl.Selection.NumberFormatLocal = "@" ’设置格式为文本objExl.Cells(i, j) = " E " & i & jElseobjExl.Cells(i, j) = i & jEnd IfNextNextobjExl.Rows("1:1").Select ’选中第一行objExl.Selection.Font.Bold = True ’设为粗体objExl.Selection.Font.Size = 24 ’设置字体大小objExl.Cells.EntireColumn.AutoFit ’自动调整列宽objExl.ActiveWindow.SplitRow = 1 ’拆分第一行objExl.ActiveWindow. SplitColumn = 0 ’拆分列objExl.ActiveWindow.FreezePanes = True ’固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ’设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" ’打印标题objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _Format(Now, "yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View = xlPageBreakPreview ’设置显示方式objExl.ActiveWindow.Zoom = 100 ’设置显示大小objExl.ActiveSheet.PageSetup.Orientation = xlLandscape ‘设置打印方向(横向) ’给工作表加密码objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _Contents:=True, Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests = FalseobjExl.Visible = True ’使EXCEL可见objE xl.Application.WindowState = xlMaximized ’EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState = xlMaximized ’工作薄显示方式为最大化objExl.SheetsInNewWorkbook = 3 ’将默认新工作薄数量改回3个Set objExl = Nothing ’清除对象Me.MousePointer = 0 ’修改鼠标Exit Suberr1:objExl.SheetsInNewWorkbook = 3objExl.DisplayAlerts = False ’关闭时不提示保存objExl.Quit ’关闭EXCELobjExl.DisplayAlerts = True ’关闭时提示保存Set objExl = NothingMe.MousePointer = 0End Sub。

相关文档
最新文档