VB操作Excel实现读取写入打印
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DetailRes.MoveNext
Next row2
xlSheet.Range(xlSheet.Cells(beginRow, 3), xlSheet.Cells(endRow - 1, 19)) = arrayProduct() '数组显示
--------------------------------------------------------------------------------------------
(2)把明细数据的右侧复选框的选中状态改为不选中
这样设置数据即可达到显示要求
vb代码如下:Rows("10:15").Select
Selection.Rows.Group
若是需要变量传入,则:Rows(beginRow & ":" & endRow - 1).Select
Selection.Rows.Group
arrayProduct(row2, 10) = DetailRes.Fields("dio")
arrayProduct(row2, 11) = DetailRes.Fields("dpo")
arrayProduct(row2, 12) = DetailRes.Fields("dso")
arrayProduct(row2, 13) = DetailRes.Fields("working_capital")
AppLogFile.WriteLine (CStr(Date) & "_" & CStr(Time) & ":Set xlApp=new Excel.Application")
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Dim xlrow, sheetIndex, sheetColumn As Integer
(3)Worksheet对象
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象
Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
(5)Cells对象
Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:
arrayProduct(row2, 14) = DetailRes.Fields("interests")
arrayProduct(row2, 15) = DetailRes.Fields("pre_tax_income")
arrayProduct(row2, 16) = DetailRes.Fields("roic") & "%"
arrayProduct(row2, 7) = DetailRes.Fields("opex_per") & "%"
arrayProduct(row2, 8) = DetailRes.Fields("oper_profit")
arrayProduct(row2, 9) = DetailRes.Fields("oper_profit_per") & "%"
xlSheet.Cells(beginRow, 2).HorizontalAlignment = xlHAlignCenter '水平写入数据的位置,这里为居中
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Font.ColorIndex = ConstModule.COLOR_BLUE '单元格的字体颜色
3、获取Excel有效区域的行和列数
intLastColNum = objImportSheet.UsedRange.Columns.Count
intLastRowNum = objImportSheet.UsedRange.Rows.Count
4、逐行读取Excel中数据
由于前两行为Header部分,所以需要从第三行读取
Set zsbworkbook=zsbexcel.Workbooks.Add
2)设置单元格和区域值
要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells属性。
With zsbexcel.ActiveSheet
.Cells(1,2).Value="100"
.Cells(2,2).Value="200"
Set objExcelFile = New Excel.Application
objExcelFile.DisplayAlerts = False
Set objWorkBook = objExcelFile.Workbooks.Open(strFileName)
Set objImportSheet = objWorkBook.Sheets(1)
arrayProduct(row2, 1) = DetailRes.Fields("rev")
arrayProduct(row2, 2) = DetailRes.Fields("sagm")
arrayProduct(row2, 3) = DetailRes.Fields("sagm_per") & "%"
如果第1到第10个单元格的值均为空或空格,则视为空行
For intCountI = 3 To intLastRowNum
''Check if Empty Data Row
blnNullRow = True
For intI = 1 To 10
If Trim$(objImportSheet.Cells(intCountI, intI).Value) <> "" Then
【2】写入数据的操作
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 1)).Merge '合并单元格
xlSheet.Cells(beginRow, 1).FormulaR1C1 = CustName '单行插入
xlSheet.Cells(beginRow, 1).VerticalAlignment = xlTop '垂直,写入数据的位置,这里为高
Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用得最多的五个对象。
(1)Application对象
Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
(2)Workbook对象
Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
'fileurl ="D:\VB英迈\Template\WriteData.xls" Editable=空值
Set xlBook = xlApp.Workbooks.Open(fileUrl, Editable) '打开EXCEL模板
Set xlSheet = xlApp.ActiveSheet
--------------------------------------------------------------------------------------------
在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外部交流。在VisualBasic中制作报表,通常是用数据环境设计器(Data EnvironmentDesigner)与数据报表设计器(DataReportDesigner),或者使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
【3-重点】vb操作EXCEL实现数据组合
现在需要把单元格1-4行进行数据组合
在EXCEL中,只要选中单元格1-4行,在
点击菜单> >数据> >组及分级显示> >组合即可达到要求!
[注]:若组合时,收缩时数据显示的是最后的那条,
在EXCEL文件中,点击数据>>组及分级显示>>设置>>
(1)把明细数据的下方复选框的选中状态改为不选中
.Cells(3,2).Value="=SUM(B1:B2)"
.Range("A3:A9")="中国人民解放军"
End With
要设置单元格或区域的字体、边框,可以利用Range对象或Cells对象的Borders属性和Font属性:
由于Excel具有自己的对象库,在VisualBasic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。这样实现了VisualBasi应用程序对Excel的控制。本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Font.Bold = True '单元格的数据为粗体显示
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Interior.ColorIndex = ConstModule.COLOR_SILVER '单元格的背景颜色
arrayProduct(row2, 4) = DetailRes.Fields("gp")
arrayProduct(row2, 5) = DetailRes.Fields("gp_per") & "%"
arrayProduct(row2, 6) = DetailRes.Fields("opex")
定义数组,一次性写入,列子如下:
If DetailRes.RecordCount > 0 Then
DetailRes.MoveFirst
For row2 = 0 To DetailRes.RecordCount - 1
Dim arrayProduct(50, 17) As String
arrayProduct(row2, 0) = DetailRes.Fields("Product")
VB操作EXCEL,实现数据读取
1、定义Excel操作变量
Dim objExcelFile As Excel.Application
Dim objWorkBook As Excel.Workbook
Dim objImportSheet As Excel.Worksheet
2、打开Excel进程,并打开目标Excel文件
Dim zsbexcelAs Excel.Application
Set zsbexcel=NewExcel.Application
zsbexcel.Visible=True
如要Excel不可见,可使zsbexcel.Visible=False
zsbexcel.SheetsInNewWorkbook=1
blnNullRow = False
End If
Next intI
若不是空行,则进行读取动作,否则继续向后遍历Excel中的行
If blnNullRow = False Then
获取单元格中的数据,做有效性Check,并将合法数据创建为实体存入对象数组中
objImportSheet.Cells(intCountI, 1).Value
VB操作EXCEL,实现数据写入以及数据组合
1】定义EXCEL的一系列操作
Dim xlApp As Excel.Application
Dim ExcelShowStr As String
Set xlApp = CreateObject("Excel.ABiblioteka Baiduplication")
xlApp.Visible = true
……
End If
Next intCountI
5、退出Excel进程,并关闭Excel相关操作对象
objExcelFile.Quit
Set objWorkBook = Nothing
Set objImportSheet = Nothing
Set objExcelFile = Nothing
基于VB和EXCEL的报表设计及打印
Next row2
xlSheet.Range(xlSheet.Cells(beginRow, 3), xlSheet.Cells(endRow - 1, 19)) = arrayProduct() '数组显示
--------------------------------------------------------------------------------------------
(2)把明细数据的右侧复选框的选中状态改为不选中
这样设置数据即可达到显示要求
vb代码如下:Rows("10:15").Select
Selection.Rows.Group
若是需要变量传入,则:Rows(beginRow & ":" & endRow - 1).Select
Selection.Rows.Group
arrayProduct(row2, 10) = DetailRes.Fields("dio")
arrayProduct(row2, 11) = DetailRes.Fields("dpo")
arrayProduct(row2, 12) = DetailRes.Fields("dso")
arrayProduct(row2, 13) = DetailRes.Fields("working_capital")
AppLogFile.WriteLine (CStr(Date) & "_" & CStr(Time) & ":Set xlApp=new Excel.Application")
Dim xlBook As Workbook
Dim xlSheet As Worksheet
Dim xlrow, sheetIndex, sheetColumn As Integer
(3)Worksheet对象
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象
Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
(5)Cells对象
Cells对象包含于Worksheet对象,表示Excel工作表中的一个单元格。如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:
arrayProduct(row2, 14) = DetailRes.Fields("interests")
arrayProduct(row2, 15) = DetailRes.Fields("pre_tax_income")
arrayProduct(row2, 16) = DetailRes.Fields("roic") & "%"
arrayProduct(row2, 7) = DetailRes.Fields("opex_per") & "%"
arrayProduct(row2, 8) = DetailRes.Fields("oper_profit")
arrayProduct(row2, 9) = DetailRes.Fields("oper_profit_per") & "%"
xlSheet.Cells(beginRow, 2).HorizontalAlignment = xlHAlignCenter '水平写入数据的位置,这里为居中
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Font.ColorIndex = ConstModule.COLOR_BLUE '单元格的字体颜色
3、获取Excel有效区域的行和列数
intLastColNum = objImportSheet.UsedRange.Columns.Count
intLastRowNum = objImportSheet.UsedRange.Rows.Count
4、逐行读取Excel中数据
由于前两行为Header部分,所以需要从第三行读取
Set zsbworkbook=zsbexcel.Workbooks.Add
2)设置单元格和区域值
要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells属性。
With zsbexcel.ActiveSheet
.Cells(1,2).Value="100"
.Cells(2,2).Value="200"
Set objExcelFile = New Excel.Application
objExcelFile.DisplayAlerts = False
Set objWorkBook = objExcelFile.Workbooks.Open(strFileName)
Set objImportSheet = objWorkBook.Sheets(1)
arrayProduct(row2, 1) = DetailRes.Fields("rev")
arrayProduct(row2, 2) = DetailRes.Fields("sagm")
arrayProduct(row2, 3) = DetailRes.Fields("sagm_per") & "%"
如果第1到第10个单元格的值均为空或空格,则视为空行
For intCountI = 3 To intLastRowNum
''Check if Empty Data Row
blnNullRow = True
For intI = 1 To 10
If Trim$(objImportSheet.Cells(intCountI, intI).Value) <> "" Then
【2】写入数据的操作
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 1)).Merge '合并单元格
xlSheet.Cells(beginRow, 1).FormulaR1C1 = CustName '单行插入
xlSheet.Cells(beginRow, 1).VerticalAlignment = xlTop '垂直,写入数据的位置,这里为高
Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。下面简单介绍一下其中最重要,也是用得最多的五个对象。
(1)Application对象
Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
(2)Workbook对象
Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
'fileurl ="D:\VB英迈\Template\WriteData.xls" Editable=空值
Set xlBook = xlApp.Workbooks.Open(fileUrl, Editable) '打开EXCEL模板
Set xlSheet = xlApp.ActiveSheet
--------------------------------------------------------------------------------------------
在现代管理信息系统的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表提供给领导决策参考,或进行外部交流。在VisualBasic中制作报表,通常是用数据环境设计器(Data EnvironmentDesigner)与数据报表设计器(DataReportDesigner),或者使用第三方产品来完成。但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
【3-重点】vb操作EXCEL实现数据组合
现在需要把单元格1-4行进行数据组合
在EXCEL中,只要选中单元格1-4行,在
点击菜单> >数据> >组及分级显示> >组合即可达到要求!
[注]:若组合时,收缩时数据显示的是最后的那条,
在EXCEL文件中,点击数据>>组及分级显示>>设置>>
(1)把明细数据的下方复选框的选中状态改为不选中
.Cells(3,2).Value="=SUM(B1:B2)"
.Range("A3:A9")="中国人民解放军"
End With
要设置单元格或区域的字体、边框,可以利用Range对象或Cells对象的Borders属性和Font属性:
由于Excel具有自己的对象库,在VisualBasic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。这样实现了VisualBasi应用程序对Excel的控制。本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Font.Bold = True '单元格的数据为粗体显示
xlSheet.Range(xlSheet.Cells(beginRow, 1), xlSheet.Cells(endRow - 1, 19)).Interior.ColorIndex = ConstModule.COLOR_SILVER '单元格的背景颜色
arrayProduct(row2, 4) = DetailRes.Fields("gp")
arrayProduct(row2, 5) = DetailRes.Fields("gp_per") & "%"
arrayProduct(row2, 6) = DetailRes.Fields("opex")
定义数组,一次性写入,列子如下:
If DetailRes.RecordCount > 0 Then
DetailRes.MoveFirst
For row2 = 0 To DetailRes.RecordCount - 1
Dim arrayProduct(50, 17) As String
arrayProduct(row2, 0) = DetailRes.Fields("Product")
VB操作EXCEL,实现数据读取
1、定义Excel操作变量
Dim objExcelFile As Excel.Application
Dim objWorkBook As Excel.Workbook
Dim objImportSheet As Excel.Worksheet
2、打开Excel进程,并打开目标Excel文件
Dim zsbexcelAs Excel.Application
Set zsbexcel=NewExcel.Application
zsbexcel.Visible=True
如要Excel不可见,可使zsbexcel.Visible=False
zsbexcel.SheetsInNewWorkbook=1
blnNullRow = False
End If
Next intI
若不是空行,则进行读取动作,否则继续向后遍历Excel中的行
If blnNullRow = False Then
获取单元格中的数据,做有效性Check,并将合法数据创建为实体存入对象数组中
objImportSheet.Cells(intCountI, 1).Value
VB操作EXCEL,实现数据写入以及数据组合
1】定义EXCEL的一系列操作
Dim xlApp As Excel.Application
Dim ExcelShowStr As String
Set xlApp = CreateObject("Excel.ABiblioteka Baiduplication")
xlApp.Visible = true
……
End If
Next intCountI
5、退出Excel进程,并关闭Excel相关操作对象
objExcelFile.Quit
Set objWorkBook = Nothing
Set objImportSheet = Nothing
Set objExcelFile = Nothing
基于VB和EXCEL的报表设计及打印