VB通用数据表格输出程序的设计.
基于VB下的Excel表格设计及其打印输出的研究

基于VB下的Excel表格设计及其打印输出的研究
李文华;焦启民
【期刊名称】《湖南科技学院学报》
【年(卷),期】2006(27)11
【摘要】Excel具有强大的报表处理功能和报表输出功能,Visual Basic中的Excel 对象为我们提供了利用编程方式访问和控制Excel表格的手段,本文给出了在Visual Basic环境下调用Excel的方法,实现了利用Excel进行报表处理和报表输出.【总页数】5页(P247-251)
【作者】李文华;焦启民
【作者单位】湖北省仙桃职业学院,湖北,仙桃,433000;湖北教育学院,计算机系,湖北,武汉,430205
【正文语种】中文
【中图分类】TP391.13
【相关文献】
1.基于VBA的Auto CAD打印输出环境定制与开发 [J], 周虹
2.VB环境下的打印输出 [J], 查源卿;冯正进
3.基于Excel数据源表的记账凭证打印输出 [J], 张永禄
4.基于C#的Excel-VBA编程批量数据表格设计与实现 [J], 王大龙;张慧娟;
5.基于VBA编程的财务数据汇总表格设计 [J], 孙东;郭伟;吴元军
因版权原因,仅展示原文概要,查看原文内容请购买。
VB_第四章_数据的输入与输出

计算机应用基础
27
Visual Basic 6.0 程序设计
TextHeight和TextWidth方法
如果语法格式中的“字符串”含有嵌 入的回车换行符,TextWidth将返回 最长行的宽度。使用TextWidth可以 确定文本显示需要的水平空间宽度, 从而可用于确定字符串的宽度是否 比窗体、图片框或Printer对象的宽 度更大。
计算机应用基础
4
Visual Basic 6.0 程序设计
4.1 输出方法
为了在窗体或图片框等对象上 显示文本,应使用Print方法, 将该窗体或图片框等对象的名 称加在它的前面即可。
计算机应用基础
5
Visual Basic 6.0 程序设计
输出方法
4.1.1 Print方法 4.1.2 与Print方法有关的函数 4.1.3 输出相关方法和属性
计算机应用基础
28
Visual Basic 6.0 程序设计
TextHeight和TextWidth方法
属性ScaleWidth和ScaleHeight 分别用来表示对象的宽度和高 度值,将它们与方法 TextWidth和TextHeight结合 使用,可以使字符串居中显示。
计算机应用基础
29
Visual Basic 6.0 程序设计
Visual Basic 6.0 程序设计
VB 基础篇
第四章 数据的输入与输出
计算机应用基础
1
Visual Basic 6.0 程序设计
第四章 数据的输入与输出
所谓的输入,就是指程序从外部环境 获得信息,它包括通过键盘、鼠标 等外设进行输入;
利用VisualBasic实现对Ecel的输出控制

利用V isual Basic 实现对Excel 的输出控制1 引言为了在程序中输出符合用户需要的报表,可以采用“水晶报表”( Crystal Report )或其他第三方报表输出控件来编程。
本文要讨论的是在Visual Basic 程序中使用微软电子表格软件 ( MS Excel )强大的报表输出功能来输出报表。
我们知道,MSOffice 的每一组件都具有VBA(Visual Basic for Application )功能,可以在组件中利用内嵌的Visual Basic 拓展该应用程序的功能,以适应用户更复杂、更特殊的需求。
微软电子表格软件( Excel )除具有强大的计算功能外,还具有灵活的报表打印输出功能,我们可以在应用程序中调用Excel 对象,利用此对象内嵌的VBA对输出报表进行控制。
在计算机中安装有Excel 的前提下,此方法可以满足大多数情况下的需要,具有一定的灵活性,在打印输出时也较为方便。
本文将介绍如何用Visual Basic 来对电子表格的输出进行控制,并给出一实例及其部份VB代码。
2 在VB 中调用Excel 对象在VB中创建Excel对象的语句为:Dim ExcelApp As ObjectSet ExcelApp = CreateObject("Excel.Application")对象创建后,打开工作薄进行设置,可用如下的语句:With ExcelApp' 打开工作薄.Workbooks.Add' 工作薄设置为可见.Visible = True' 设置工作表的名称.Worksheets(1).Name = " 成绩表".Worksheets(2).Name = " 论文表".Worksheets(3).Name = " 课程表"' 选中第二个工作表.Worksheets(2).SelectEnd With这样,程序就开始打开Excel ,三个工作表的名称分别为:“成绩表”、“论文表”、“课程表”,并且令当前工作表为“论文表”。
vb设计99乘法表

在设计一个99乘法表的VB程序时,首先需要明确的是,这是一个非常基础的编程任务,主要涉及到循环结构和条件语句的使用。
以下是一个简单的VB程序,用于生成一个99乘法表:```vbOption ExplicitPrivate Sub Command1_Click()Dim i As Integer, j As IntegerFor i = 1 To 9 Step 1For j = 1 To iDebug.Print "*",If j = 1 ThenDebug.Print j & "×" & i & "="ElseDebug.Print ""End IfNext jDebug.Print vbNewLineNext iEnd Sub```这段代码首先定义了两个变量i和j,分别用于表示乘法表的行数和列数。
然后使用两个嵌套的For循环来生成乘法表。
外层循环控制行数,内层循环控制每行的列数。
在每次内层循环中,都会打印出一个星号(*)和一个乘法符号(如果这是当前行的第一个数字),然后打印出当前的乘积(如果这是当前列的第一个数字)。
当内层循环结束后,会打印一个换行符,以便开始下一行的打印。
这个程序的主要功能就是生成一个99乘法表,用户可以通过点击按钮来触发这个功能。
当运行这个程序时,它会在VB的调试窗口中打印出乘法表的内容。
对于标题部分,可以根据您的需要来添加。
比如:"99乘法表" 或者"趣味数学:99乘法表"。
您可以在程序的开始部分添加这个标题,或者在程序运行时动态地添加这个标题。
具体实现方式取决于您的具体需求和代码环境。
以上就是一段简单的VB代码,用于生成一个99乘法表。
如果您需要更复杂的功能或者有特定的需求,欢迎提出,我会尽力提供帮助。
VisualBasic数据库程序设计

+ "Password=sa;Initial Catalog=HrSystem;Data Source=127.0.0.1" '打开到数据库的连接 cnn.Open '设置cmd的ActiveConnection属性,指定与其关联的数据库连接 Set cmd.ActiveConnection = cnn '设置要执行的命令文本 mandText = "UPDATE DepInfo SET Dep_Name='人力资源部' WHERE Dep_Name='人事
'打开到数据库的连接 cnn.Open '设置rs1的ActiveConnection属性,指定与其关联的数据库连接 Set rs1.ActiveConnection = cnn '设置游标类型 rs1.CursorType = adOpenStatic '打开记录集,将从表DepInfo中读取的结果集保存到记录集rs1中 rs1.Open varSource '显示记录集中记录的数量 MsgBox "当前记录集中共有记录 " + Trim(rs1.RecordCount) + " 个"
说明 默认,指示对象是关闭的 指示对象是打开的 指示 Recordset 对象正在连接 指示 Recordset 对象正在执行命令 指示 Recordset 对象的行正在被读取
(5)Open方法
Open方法用于打开到数据源的连接。Open方法的语法结构如下:
VB数据、表达式与简单程序设计

2. 模块(续)
标准模块 应用程序中可被多个窗体共享的代码,应 当被组织到所谓的“标准模块”之中。 标准模块文件的扩展名是.bas; 标准模块中保存的过程都是通用过程。除 了这些通用过程之外,标准模块中还包 含有相关的说明。 使用工具栏的“添加”按钮可创建标准模 块
2. 模块(续)
类模块 类模块用于创建新的对象类,它包含新的 对象类的属性、方法的定义等。
要能够编写出正确的程序,首 先要学会如何使用数据、如何正 确地表达各种计算关系
1. 数据类型
VB支持的数据类型多达12种。表4-1列 出了这些数据类型的名称、存储大小及 数据的取值范围。 变体型数据是VB的缺省数据类型,它可 以存储各种类型的数据,但效率低,存 储容量大,一般不使用。
表4.1(1)
1)变量名及类型说明(续)
Option Explicit语句 在模块中使用Option Explicit语句,系统将 检查模块中所有未加显式说明的变量,一 旦发现有这样的变量存在,就会产生一个 出错信息,提示使用者改正错误。
4.4 运算符与表达式
VB中的运算符和表达式可分为: 4.4.1 算术运算符与算术表达式 4.4.2 关系运算符与关系表达式 4.4.3 逻辑运算符与逻辑表达式
3)逻辑型常量
逻辑型常量只有两个取值: True(真) False(假)
4)日期型常量
日期型常量的一般表示形式是: mm/dd/yyyy, 如1998年6月15常量相区分,日期常量要 用“#”括起来
5)符号常量
以符号形式表示的常量称为“符号常量”。 代表常量的符号称作“常量名”。常量名 是一个长度不超过255个字符、只能由字 母、数字和下划线组成且首字符必须是字 母的字符串。常量名中的字母不区分大小 写
vb程序设计实验指导书

实验的总体要求与方法实验是巩固课堂所学知识、掌握可视化程序设计的方法、提高分析问题和解决问题能力的最重要的途径。
因此明确实验目的、内容与要求、实验步骤及实验规则,一方面有助于实验任务的顺利完成,另一方面也有利于养成严谨科学的作风。
每个实验都要遵循认真预习准备、认真做好实验、认真写好实验报告三个阶段进行。
1.实验的基本目的(1)通过实验熟悉面向对象程序设计的基本概念。
(2)通过实验熟练掌握利用VB进行可视化程序设计的基本方法。
(3)通过实验掌握应用程序的调试方法,加强应用能力的训练与培养,从而具有计一般应用程序和解决事务管理问题的能力。
2.实验的基本要求(1)上机实验之前,应认真预习有关实验内容及相应教材。
(2)实验过程中应记录实验中的有关数据(包括出错信息等),以便课后进行分析。
(3)上机时要遵守实验室的规章制度,爱护实验设备。
3.实验报告每个实验结束后都应写出实验报告,报告中应包括下列内容:(1)实验目的(2)实验内容与要求(3)实验步骤(4)实验结果及分析讨论、实验心得体会等。
实验一熟悉vb的开发环境、程序设计的基本步骤【实验目的】1.熟悉Visual Basic 6.0集成开发环境。
2. 学习怎样启动和退出VB3.掌握开发一个简单程序的基本步骤。
4.掌握简单代码的编写。
【实验内容】1.启动和退出VB2.开发一个简单程序。
3.将Visual Basic工程编译生成可执行文件。
【实验要求及操作步骤】一、启动和退出VB1、进入VB集成开发环境要进入VB应用程序,首先要运行VB的集成开发环境。
启动VB的方法如下:[方法1]◇单击任务栏上的“开始”按钮;◇选择“程序”文件夹,接着选取“Microsoft Visual Basic 6.0中文版”文件夹,再选取“Microsoft Visual Basic 6.0中文版”项,如图1-1所示;图1-1 启动VB的方法1◇单击鼠标左键。
[方法2]◇单击任务栏上的“开始”按钮;◇选择“程序”文件夹;◇使用“Windows 资源按理器”查找VB可执行文件 VB6.exe;◇双击图标。
使用VB将SQL Server数据导出生成Excel表格

使用VB将SQLServer数据导出生成Excel表格作者:杨晓峰张茁来源:《硅谷》2009年第10期[摘要]使用VB将SQL Server和Excel结合起来处理数据会得到事半功倍的效果。
介绍设计一个VB程序将SQL Server中查询到的数据导出生成Excel表格的方法。
以解决非专业人员处理数据和阅读数据的问题,也解决SQL Server数据发布需要使用专用的SQL Server管理工具的不便之处。
[关键词]VB SQL Server Excel表格数据库中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0520058-01SQL Server作为微软在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐。
Excel是微软公司出品的Office系列办公软件中的一个组件,确切地说,它是一个电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测并且具有强大的制作图表的功能。
使用VB将SQL Server和Excel结合起来处理数据会得到事半功倍的效果。
下面将介绍如何设计一个VB程序将SQL Server中查询到的数据导出生成Excel表格。
一、利用ADO的数据库访问组件获取SQL Server中的数据1.在VB工程中新建一个模块LocalInfo,在模块中定义SqlConn的公共函数用以建立与SQL Server数据库的连接SqlCn对象,函数代码如下:Public Function SqlConn(ByVal Ser As String, Data As String, User As String, Pass As String) As BooleanOn Error Resume NextSet SqlCn = New ADODB.ConnectionSqlCn.CursorLocation = adUseClientSqlCn.ConnectionString = "Provider=SQLOLEDB;Server=" + Ser + ";Database=" + Data + ";User ID='" + User + "';Password='" + Pass + "';"SqlCn.OpenIf Err ThenErr.ClearSqlConn = False '数据库连接失败MsgBox "数据库连接失败!系统不能正常运行!" & Chr(13) & Chr(10) & "请进入“数据库设置”重新设定数据库参数!" & Chr(13) & Chr(10) & "或与系统管理员联系,完成后请重新启动该系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB通用数据表格输出程序的设计做为一种简捷、系统的Windows应用程序开发工具,Visual Basic具有强大的数据处理能力,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。
但是,VB缺乏足够的、符合中文习惯的数据表格输出功能。
虽然使用Crystal Report控件及Crystal Reports程序可以输出报表,但操作很麻烦,中文处理能力也不理想,特别是不能够用来制作不确定内容的表格。
笔者在用VB开发淮北市医疗保险信息管理系统时,需要对任意的查询结果进行表格输出,为此,编制了一个通用的数据表格输出控件,能够根据查询的结果自动生成二维中文表格,并打印输出,在此介绍给大家,共同探讨。
一.VB中的结果集VB提供的数据访问方法有数据询问对象(DAO)、Data控件、远程数据对象(RDO)、RemoteData控件(RDC)、ODBC API、VB SQL等,其中ODBC API比较复杂,开发、调试和支持非常困难;VB SQL是针对Microsoft SQL Server的,这两种方法使用的比较少,这里不做讨论。
比较常用的方法是DAO、Data控件、RDO、RDC,其中DAO和Data控件使用的结果集(又叫纪录集) 包含在Recordset 对象中,RDO和RDC使用的结果集包含在rdoResultset对象中。
通用表格输出的实现方法就是根据任意的Recordset对象或rdoResultset对象自动生成表格并输出。
二.表格的自动生成1. Recordset对象下面以Data控件为例,介绍Recordset对象的表格自动生成方法。
假设有Data控件名称为MyData,首先说明相关的内容及用法:(1) Data控件的结果集包含在它的Recordset对象中,引用方法为: MyData.Recordset。
(2) Recordset 对象的RecordCount属性为结果集的行数,它决定了表格的长度,该属性引用方法为: MyData.Recordset.RecordCount。
(3) Recordset 对象包含一个Fields集合,通过Fields集合的Count属性可以得到结果集中字段的个数,用做表格的列数,该属性引用方法为: MyData.Recordset.Fields.Count。
(4) Fields集合包括结果集合全部Field对象,这些Field对象引用方法为:MyData.Recordset.Fields(i),其中i是该Field对象在中的位置序号,从0开始计数。
(5) Field 对象的Name属性是该字段的名称,用做表格对应列的名称,引用方法为:MyData.Recordset.Fields(i).Name。
(6) Field 对象的Size属性是该字段数据的最大尺寸,引用方法为:MyData.Recordset.Fields(i).Size。
(7) Field 对象的Type属性是该字段数据的类型,引用方法为:MyData.Recordset.Fields(i).Type。
用Field 对象的Size和Type属性可以计算出表格对应列的宽度。
(8) Field 对象的Value属性是该字段的值,这是表格对应列的内容,引用方法为:MyData.Recordset.Fields(i).Value。
以上引用在VB中都可有多种引用方法,这里使用的是比较明了的一种,便于说明问题。
注意:表格的自动生成可分为两个步骤。
第一步,根据结果集中各字段的Size和Type属性,生成表格各对应列的宽度,用Format函数使用的格式字符串表示。
下面的Function getFmt()用来生成表格各列的格式字符串,调用时把Field 对象的Type和Size属性值分别赋给形式参数intType和logSize。
Private Function getFmt(intType As Integer, logSize As Long) As StringDim i As IntegergetFmt = ""'返回的结果串初始置空Select Case intTypeCase dbBooleangetFmt = getFmt & "\ \ \ \0;\ \ \ \1"'Boolean 型值转换为0、1,Case dbBytegetFmt = "@@@@"Case dbIntegergetFmt = "@@@@@@"Case dbLonggetFmt = "@@@@@@@@@@"Case dbCurrencygetFmt = "@@@@@@@@@@"Case dbSinglegetFmt = "@@@@@@@@@@"Case dbDoublegetFmt = "@@@@@@@@@@"Case dbDategetFmt = "@@@@@@@@@@"Case dbBinarygetFmt = "@@@@"Case dbTextIf logSize >= 40 Then'限制一列最多打印40个半角字符getFmt = "@@@@@@@@@@@@@@@@@@@@@@@ _@@@@@@@@@@@@@@@@@"ElseFor i = 0 To CInt(logSize / 2) * 2 - 1getFmt = getFmt & "@"Next '调整数值长度为偶数,以适应汉字制表符End IfCase dbLongBinarygetFmt = "@@@@"Case dbMemogetFmt = "@@@@@@@@@@@@@@@@"Case dbGUIDgetFmt = "@@@@"Case dbBigIntgetFmt = "@@@@@@@@@@"Case dbVarBinarygetFmt = "@@@@"Case dbCharFor i = 0 To CInt(logSize / 2) * 2 - 1getFmt = getFmt & "@"NextCase dbNumericFor i = 0 To CInt(logSize / 2) * 2 - 1getFmt = getFmt & "@"NextCase dbDecimalFor i = 0 To CInt(logSize / 2) * 2 - 1getFmt = getFmt & "@"NextCase dbFloatgetFmt = "@@@@@@@@@@"Case dbTimegetFmt = "@@@@@@@@"Case dbTimeStampgetFmt = "@@@@@@@@@@"End SelectEnd Function第二步,取结果集的内容并根据各列的格式字符串生成表格,生成的表格存放在字符串数组strDy()中,下面用Sub Dy()例示这一步骤。
Dim strDy() As String'存放格式化后的表格内容Dim Fmt() As String'存放表格各列的格式字符串'以上二个数组变量的元素个数根据结果集的行数和列数在程序中设定Dim str,str0,str1,str2 As String'临时使用的串变量Dim i,j As Integer'临时使用的整型变量Dim intDc As Integer '存放表格行数,实际上即是strDy()的元素个数Private Sub Dy()With MyData.Recordset.MoveLastReDim strDy(.RecordCount + 8)'需存放标题、表框等,所以加8ReDim Fmt(.Fields.Count)For i = 0 To .RecordCount + 7strDy(i) = "" '初始置空NextFor i = 0 To .Fields.Count - 1Fmt(i) = getFmt(.Fields(i).Type, .Fields(i).Size)'生成表格各列的格式字符串j = Len(.Fields(i).Name)If j > Len(Fmt(i)) ThenFmt(i) = String$(Int((j / 2) + 0.5) * 2, "@")'标题(字段名) 字多则增大列宽End IfNextstr = "┃"str0 = "┏"str1 = "┠"str2 = "┗" '设定表格为粗框细线,可根据需要改变For i = 0 To .Fields.Count - 1For j = 1 To Len(Fmt(i)) / 2str0 = str0 & "━"str1 = str1 & "─"str2 = str2 & "━"NextIf (i = .Fields.Count - 1) Thenstr = str & Format(.Fields(i).Name, Fmt(i)) & "┃"Elsestr = str & Format(.Fields(i).Name, Fmt(i)) & "│"End IfIf (i = .Fields.Count - 1) Thenstr0 = str0 & "┓"str1 = str1 & "┨"str2 = str2 & "┛"Elsestr0 = str0 & "┯"str1 = str1 & "┼"str2 = str2 & "┷"End IfNextstrDy(0) = "表格标题"'通过在标题前增加空格可使标题居中strDy(1) = ""strDy(2) = Format(Now, " 打印日期:yyyy年m月d日")strDy(3) = str0strDy(4) = strstrDy(5) = str1intDc = 6.MoveFirstDo While Not .EOFstr = "┃"For i = 0 To .Fields.Count - 1If IsNull(.Fields(i).Value) Then'处理Null 值If i = .Fields.Count - 1 Thenstr = str & Format(" ", Fmt(i)) & "┃"Elsestr = str & Format(" ", Fmt(i)) & "│"End IfElseIf i = .Fields.Count - 1 Thenstr = str & Format(Left$(.Fields(i).Value, Len(Fmt(i))), Fmt(i)) & "┃"Elsestr = str & Format(Left$(.Fields(i).Value, Len(Fmt(i))), Fmt(i)) & "│"End IfEnd IfNextstrDy(intDc) = strDy(intDc) & strintDc = intDc + 1.MoveNextLoopstrDy(intDc) = str2End WithEnd Sub在实际编程中还要排除二进制数据字段,全角与半角字符的匹配调整,处理数据中出现的换行符、回车符、制表符,等等,限于篇幅,这里不于介绍。