对Excel批量数据操作的几点研究

时间:2022-07-31 09:24:21

对Excel批量数据操作的几点研究

摘要:本文介绍了Excel结合VB编程在报表输出方面的基本应用,并具体讲解了对Excel表格进行批量数据操作的三个方法,在不同的场合合理运用这些方法,能够在大量数据输出或实时报表打印等方面取得较为良好的效果。

关键词:;Excel;批量数据操作

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 09-0000-01

The Study for Batch Data Operation in Excel

Yang Wengang

(Kunming Xingaoyuan Technology Co.,LTD.,Kunming650118,China)

Abstract:This paper introduces the basic usage Excel with VB programming in the report output,and explained the three methods to Excel form batch data operation,reasonable use of these methods in different situations,and can make a more good effect for the large data output or real-time printing for report.

Keywords:;Excel;Batch data operation

一、引言

Excel作为微软办公系统的一部分,无论是在数据的导入导出、报表的格式打印、还是图表的分析输出等方面,其成熟的表现有目共睹,而通过编程进行Excel报表输出已经是一种被广泛应用的技术。

在企业的信息系统中经常需要进行报表打印,而在制造业生产过程中也会有实时的数据输出需求,利用微软Excel电子表格强大的报表功能和丰富的编程接口,可以方便的在C/S模式或B/S模式中进行电子表格的输出。

二、Excel的基本编程

编程输出电子表格的基本思路,就是对Excel单元格进行读写操作

Value=objSheet.Cells(RowIndex,ColIndex) '读取单元格

objSheet.Cells(RowIndex,ColIndex)=Value '写入单元格

然而一张标签通常有多个单元格需要填写数据,这就需要在程序中对单元格进行循环操作,如

For i As Integer=1 To 10

For j As Integer=1 To 10

objSheet.Cells(i,j)=“内容”

Next j

Next i

对于仅有少量单元格需要操作的电子表格来说,这种方法并没有什么问题,一旦需要操作的单元格很多,其读写效率就会出现明显的下降,特别是在需要根据物流情况实时输出标签的场合,程序执行效率将对生产运行造成极大的障碍。

读写效率低下的一个重要原因是程序需要对每一个单元格单独进行操作,为此我们需要一种能够批量读写单元格的方法。

三、批量操作的技巧

导出数据到Excel文件的技巧有很多,我们重点研究三种可供Excel数据批量导出的方法:Excel的Range特性、CSV文件的文本流输出、以及页面控件自带的Excel导出方法,以下对这三种可供利用的技巧进行一一阐述。

(一)Excel的Range特性。Excel组件中的Range对象指的是表格中的一组单元格,它可以只表示一个单元格,也可以代表一组单元格,例如objSheet.Range("A1","E5"),它表示从表格的单元格A1到单元格E5这一矩形区域内的全部25个单元格,这在数据处理中表现为一个长度均为5的二维数组。

将一组单元格读取到二维数组中后,我们就可以像操作普通的数组那样对数据进行处理,在内存中对数组进行数据读写是非常快的,因此在对Excel表格进行操作时,我们可以先将要操作的区域读取到二维数组中(用于保留表格的原始数据),然后对数组进行数据处理,最后再把处理后的二维数组写入到指定的单元格区域中。

利用这一特性,我们就可以使用二维数组来对一个单元格区域进行批量操作

Dim value As Object(25,99)

Value=objSheet.Range("A1","Z100").Value

objSheet.Range("A1","Z100").Value=Value

这种方法能够使得Excel大量数据的读写变得容易和快速,并且Object类型的数组可以适用于多种数据类型,包括Excel中的图片和表单。但是这种方法也有它的缺点,例如程序员需要预先知道将要操作的表格范围有多大,如果数据区域超出了定义好的单元格区域或是数组长度,将出现数据的部分丢失;另外对于复杂数据的处理,例如需要在数组中处理多媒体资料,程序将变得非常复杂。

(二)CSV文件的文本流输出。Excel支持CSV文件类型,这是一种用逗号分隔数据的文本文件,这就使我们可以利用文本流的输入输出来对表格数据进行快速的导入导出

Dim sw As IO.StreamWriter

sw.WriteLine("内容1,内容2,内容3,……")

这种方法由于只需要将值写入文件流,因此比矩形区域覆盖的二维数组执行效率要高,但是文本流无法保存格式,所以这种方法多用于需要将大量数据导出保存而不重视报表样式的场合。

(三)页面控件的Excel导出方法。在中,某些页面控件本身就包含了导出数据到Excel的方法,例如用于数据呈现的Data Grid和Data Grid View服务器控件,其Render Control方法可以将服务器控件的呈现内容输出到html文本流中,只需将这个文本流再输出到客户端保存为Excel文件即可

DataGrid1.RenderControl(o Html Text Writer)

Page.Response.Output.Write(o String Writer.To String())

这种方法可以将页面控件中呈现的内容完整的导出的Excel文件,包括原控件中的设置的颜色、字体等格式,比使用CSV的文本流输出要方便,但是由于输出的是控件的呈现内容,所以必须先将需要导出的数据和格式完整无误的呈现在服务器控件中,否则导出将出错。这种方法多用于报表样式比较简单,且需要先在操作界面中显示导出内容的场合。

四、结束语

本文介绍了Excel电子表格结合编程在报表输出方面的基本应用,并具体讲解了对Excel表格进行批量数据操作的三个方法。在不同的场合合理运用这些方法――如制造业的生产报表输出,因为格式复杂,可以采用Range特性输出;银行系统的交易明细输出,因为对格式没有需求,可以采用文本流输出;通信行业的话费明细输出,因为格式比较固定且事先要查询显示,可以采用页面控件输出的方法――能够在大量数据输出或实时报表打印等方面取得较为良好的效果。

参考文献:

[1]Microsoft.Microsoft Excel Visual Basic参考手册.微软,2003

[2]Microsoft.MSDN Library for Visual Studio 2005.微软,2005

上一篇:动漫网站的设计和开发 下一篇:电力营销技术系统架构