社区
VB基础类
帖子详情
[急问]VB调用Excel?
niewind
2003-08-03 03:02:46
我手上有一个Excel表格,是别人发过来的多年的记录,有700多条,
我现要在800*600的分辨率中间部分显示它,用按扭《上一页》和《下一页》来控制Excel表格翻页。
问题解决定给分,还请大家帮忙,急要,谢谢了!~
...全文
39
4
打赏
收藏
[急问]VB调用Excel?
我手上有一个Excel表格,是别人发过来的多年的记录,有700多条, 我现要在800*600的分辨率中间部分显示它,用按扭《上一页》和《下一页》来控制Excel表格翻页。 问题解决定给分,还请大家帮忙,急要,谢谢了!~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vikingleo
2003-08-05
打赏
举报
回复
MARK
superego
2003-08-03
打赏
举报
回复
如果只是想调用excel里的数据,那就在vb窗体中添加一个ole控件就可以了!!然后做连接!!!
gpo2002
2003-08-03
打赏
举报
回复
如果你只是要显示数据的话
建议用mshflexgrid/datagrid这类的控件显示数据,用数据邦定来联接相关的excel表
ado联接字符串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\\Book1.xls;Extended Properties=Excel 8.0;Persist Security Info=False
lemonade
2003-08-03
打赏
举报
回复
在VB中制作报表一般来讲有三种方法:
1、直接使用VB6.0中自带的Data Report 来做,这种方法有很大的局限性,对于比较规则的报表,但对于比较复杂的报表,比如说一张报表,上部分是人员的工资,下部分是人员的各日的考勤,使用这种方法就无能为力。
2、使用直接的打印方法,即Printer.print ,这种方法直接向打印机打印,就象过去使用Foxpro似的,需要进行打印机定位,并且在Windows下,不同的字符数字所占的宽度也不相同,所以这种方法使用起来非常麻烦。
3、使用微软的Excel。本文重点讨论用Excel来制作报表所涉及的问题。我们用Excel做报表时,不仅是将所要的内容填到Excel的工作表中,而且还需要填写公式、定义合适的格式(格线、字体、对齐)等。
Excel的每张工作表是由若干行、若干列构成的,行列的交叉形成的小格称作单元格。我们正好可以用这些现成的单元格来做我们的报表的相应的格。为了程序简单,可以将报表的模板做好,如表头,相应的行高、列宽、字体、对齐调整好(事实上,这些也可以通过程序来实现,只是麻烦点。),然后利用VB程序来操纵Excel。
这里我们以SQL SERVER 7.0为后台数据。首先定义好需要的变量,在VB6.0的菜单“工程\引用”中确保 Microsoft Excel 8.0 Object Library(在Excel2000中,此处为Excel 9.0)复选框选中。
再向Excel工作表中填入数据:
Dim VBExcel As Excel.Application
Dim xlbook As Excel.Workbook 定义Excel工作簿对象
Dim xlsheet As Excel.Worksheet 定义Excel工作表对象
Dim rssalary As New ADODB.Recordset 定义记录集
rssalary.Open SQLStrsalary, CNstring, adOpenStatic, adLockReadOnly
rssalary 为已计算好的工资数据记录集。
SQLStrsalary 是SQL语句(如SELECT * FROM SALARY)。
Cnstring 是连接字符串(如Provider=SQLOLEDB.1;Integrated
Security=SSPI;Persist Security Info=False;
Initial Catalog=DBname;Data Source=servername)。
Set VBExcel = CreateObject("excel.application")
VBExcel.Visible = True
根据操作人员是否需要见到Excel此处可设为TRUE 或FALSE
Set xlbook = VBExcel.Workbooks.Open(ExcelFile)
ExcelFile为事先设计好的Excel模板文件(包括路径)
Set xlsheet = xlbook.Worksheets("salary")
Salary 为Excel模板工作表的名字
xlsheet.Activate
下面是向单元格中填写数据(以一个简单的工资打印为例):
xh = 1
Row = 6 从第6行开始是工资数据,1-5 行为工资单表头
SumRow = Row SumRow用来存放合计的起始行
Do While Not rssalary.EOF
Col = 1
xlsheet.Cells(Row, Col).Value = xh
Col = Col + 1
xlsheet.Cells(Row, Col).Value = rssalary("name")
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("jngz").Value)
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("jbdx").Value)
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("gwgz").Value)
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("zygz").Value)
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("jfgz").Value)
Col = Col + 1
xlsheet.Cells(Row, Col).Value = Str(rssalary("yfgz").Value)
xh = xh + 1
Row = Row + 1
rssalary.MoveNext
Loop
以上可将各人的工资项打印出来,下面是合计(仅以一列的合计为例,填写公式):
Col = 1
xlsheet.Cells(Row, Col).Value = ""
Col = Col + 1
xlsheet.Cells(Row, Col).Value = "合计"
Col = Col + 1
HeJi = "=SUM(c" + Trim(Str(SumRow)) + ":c" + Trim(Str(Row - 1)) + ")"
xlsheet.Cells(Row, Col).Value = HeJi
填入公式,HeJi是一个字符串变量。
如果用到的汇总是求平均、记数等,可用相应的Excel函数来替代上面的SUM,如COUNT、AVERAGE等。
因为Excel中所见到的格线,其实并不是实际存在的线,只是为了分割各个单元格;而如果在Exce的选项中设置上有网格线的话,那么每一个格的四周都有线,并不一定能符合实际的需要。因此,如果只是某些地方需要画线,可用以下方法为某个单元格加上边框:
xlsheet.Cells(Row, Col).Borders(xlTop).Weight = xlThin
其中Borders 的参数可为:xlTop,xlBottom,xlRight,xlLeft 代表位置。
它的Weight 的值可为:xlThin,xlMedium,xlThick.... 代表线粗。
在Excel 中,如果某个单元格的宽度小于其中内容的长度,其中的内容将显示一串“#”,真正的内容就看不到了,我们可用以下的方法来解决:
xlsheet.Cells(Row, Col).ShrinkToFit = true
这样Excel可以自动将单元格中内容的字体缩小来适合所在的单元格的宽度。也可以将模板中所有可能用到的单元格格式的对齐方式中的“缩小字体填充”项选中,然后将不需要缩小字体填充的单元格设为:
xlsheet.Cells(Row, Col).ShrinkToFit =false
由于Excel中对于对齐方式(即靠左、右,上、下等)有它自己默认的方式,如数字自动在单元格中靠右,文字自动靠左。如果需要中单元格的内容在某个单元格中的对齐方式可以这样来做:
水平对齐:xlsheet.Cells(Row, Col).HorizontalAlignment = xlCenter
其中xlCenter处可为xlLeft、xlRight。
垂直对齐:xlsheet.Cells(Row, Col). VerticalAlignment = xlCenter
其中xlCenter处可为xlTop、xlBottom。
如果需要用到单元格的内容在多个单元格中居中(跨列居中),可以这样来实现(下例可实现第一行的A到H列居中):
Dim Total As Range
RangeCells = "a" + RTrim(LTrim(Str(1))) + ":" + “h” + RTrim(LTrim(Str(1)))
Set Total = Range(RangeCells)
Total.Select
Total.HorizontalAlignment = xlHAlignCenterAcrossSelection
然后在这几个单元格中的最前一个单元填入实际内容。
xlsheet.Cells(1, 1).Value = “实际内容”
有时我们可能会用到改变字体及尺寸,可以通过以下方法实现:
Sheet1.Cells(Row,Col).Font.Name = "隶书"
Sheet1.Cells(Row,Col).Font.Size = 20
在单元格中输入数字性的文本,如05182381104,写到Excel的单元格中时,Excel会自动将其视为数字,从而变为5182381104。要解决这个问题,可这样做:
xlsheet.Cells(Row, Col).Value="'"+"05182381104"
上句中的两个双引号中间是一个单引号。
另外,如果一张Excel工作表的长度超过了所设定的打印机的纸张的长度,Excel将自动分页,第二页就会没有表头。在出现这种情况下,如果表头是模板中固定好的,可在模板中设置好,方法是在Excel的菜单“文件\页面设置”中来设置。如果表头是在程序中形成的,可用下面的方法:
xlsheet.PageSetup.PrintTitleRows = rows("1:6").Address
这里“1:6”是根据表头所在的行来自行设定的。
xlsheet.PageSetup.PrintTitleColumns = Columns("A:p").Address
这里“A:P”是根据表头所在的列来设定的。
通过上面这些方法来制做我们平常所见的报表,应该是不会有太大的问题。其实,我们在Excel软件中所能做到的,在VB中都可以通过调用来实现。
vb
调用
excel
方法大全
vb
调用
excel
方法大全,
excel
是很好用的常用工具,用
vb
与
excel
结合起来
VB
调用
EXCEL
VB
调用
EXCEL
VB
.NET开发
Excel
插件实例课程
手把手教您如何快速开发一个属于自己的
Excel
插件,制作
Excel
众多功能,办公自动化,高效率办公,开发一个个性化的
excel
插件。我会从头到尾开始教学,开发过程常遇到什么问题,该如何解决。记录我开发
excel
插件的案例...
vb
程序
调用
excel
数据
能不能用
VB
调用
EXCEL
呢?Active技术标准为我们解决了这个问题。最近笔者为单位开发“土工试验数据整理”的某个模块时,涉及到复杂数据表格的输出问题,经过笔者的摸索,用
VB
调用
EXCEL
,取得了很好的效果。本文从编程...
VB
调用
Excel
程序
VB
调用
Excel
程序
VB
调用
Excel
程序
VB
调用
Excel
程序
VB基础类
7,763
社区成员
197,605
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章