您的位置:首页 > 其它

度量快速开发平台ExportToExcel使用介绍

2015-11-20 15:28 375 查看
度量快速开发平台中,各类部件都提供了快捷的导出功能,便于数据导出,本文主要介绍网格部件的导出xls功能和其他特殊的导出要求说明。

方法说明

网格部件导出xls文件,大家最熟悉的用法就是直接从智能向导中生成导出xls的代码,简单明了好用。下面是一个网格部件导出使用示例:
  
[align=left]'智能向导生成的导出xls[/align]
  
[align=left]dim file=网格部件1.ExportToExcel()[/align]
  
if isnull(file)=false
then
  
[align=left]if showquestion("文件已导出,是否立即打开?") then   [/align]
  
[align=left]       openfile(file)[/align]
  
    end
if
  
[align=left]end if[/align]
  
   该功能运行后,需要弹出一个保存导出文件的文本框,并且默认的文件名称是网格部件的名称,我们可以选择一个地址和文件名保存,保存后就提示是否打开查看。



   导出功能使用就完成了,简单好用。而且度量快速开发平台中,导出的xls文件是所见所得的效果,即网格部件中拖拉过滤形成的是什么数据,则导出后查看就是什么数据。

   下面两个图是网格部件显示数据效果与导出后的效果对比,一个是网格直接查询的效果:



下面一个是在网格部件中使用了分组查看的功能,然后再导出的效果,与查看的效果一样。



    导出方法还可以重用,即我们可以预先定义好要导出网格的名称和保存路径。使用方法就是把智能向导中的代码稍作调整,重载一个ExportToExcel方法即可。
  
[align=left]'生成预先定义好保存路径与文件名的导出[/align]
  
Dim filePath
= "c:\test.xls"
  
[align=left]网格部件1.ExportToExcel(filePath)[/align]
  
if showquestion("文件已导出,是否立即打开?") then 
 
  
[align=left]openfile(file)[/align]
  
end if
  
这样使用后,我们在执行导出的时候,就不需要弹出选择保存导出文件的存储位置以及文件名称,系统会按照指定名称与路径自动保存。

复杂导出介绍

如果我们想要实现把一个网格中的数据,导出的时候生成多个导出文件怎么办?比如有一个人员档案网格,要把住培人员的导出一个xls,把医务人员导出成另外一个xls,那如何实现好呢?我们有几种方式可以实现。

第一种是根据网格部件所见所得的导出特点进行,把网格部件中的数据先过滤成住培人员,执行导出;导出完成后,再把网格中的数据过滤成医务人员,再执行导出。即能实现在一个导出功能中分类导出成不同xls文件的功能。这个需要利用DataView的RowFilter实现网格数据动态过滤。具体实现如下:
  
[align=left]'借助网格部件的所见所得导出功能[/align]
  
[align=left]'通过网格部件的行过滤实现[/align]
  
[align=left]网格部件1.DataTable.DefaultView.RowFilter="类别='住培人员'"[/align]
  
Dim filePath
= "c:\expfile\住培人员.xls"
  
[align=left]dim file[/align]
  
[align=left]file=网格部件1.ExportToExcel(filePath)[/align]
  
[align=left]'-----------------------------------------------------------[/align]
  
[align=left]网格部件1.DataTable.DefaultView.RowFilter="类别='医务人员'"[/align]
  
[align=left]filePath = "c:\expfile\医务人员.xls"[/align]
  
[align=left]file=网格部件1.ExportToExcel(filePath)[/align]
  
[align=left][/align]
  
[align=left]网格部件1.DataTable.DefaultView.RowFilter="1=1"[/align]
  
第二种方法是建立一个要导出的网格部件,把每次要导出的数据查询出来给这个网格,再导出。这种方式要麻烦一点,不过也是一种方式,可以熟悉DataTable的更多用法。
  
[align=left]'获取整个数据网格的dt[/align]
  
dim dt
= 网格部件1.DataTable
  
[align=left]'克隆一个与网格部件1结构一样的dt用于保存要导出的数据[/align]
  
dim dt_xls
= dt.Clone()
  
[align=left][/align]
  
[align=left]'把要导出的网格部件设置dt并刷新出来[/align]
  
网格部件2.DataTable
= dt_xls
  
[align=left]网格部件2.RefreshDataByDataTable()[/align]
  
[align=left]'--------------------------------------------[/align]
  
[align=left]'′从网格部件1中查询要导出的数据到网格部件2中[/align]
  
dim dr_xls
= dt.Select("类别='住培人员'")
  
[align=left]'填充数据到要导出的网格部件中[/align]
  
[align=left]For i=0 to dr_xls.Length-1[/align]
  
[align=left]   dt_xls.ImportRow(dr_xls)[/align]
  
[align=left]next[/align]
  
[align=left]'导出本部分数据到指定的文件中[/align]
  
Dim filePath
= "c:\expfile\住培人员.xls"
  
[align=left]dim file[/align]
  
[align=left]file=网格部件2.ExportToExcel(filePath)[/align]
  
[align=left]'------------------------------------------[/align]
  
[align=left]'清空要导出网格部件的数据[/align]
  
[align=left]dt_xls.Clear()[/align]
  
[align=left]'从网格部件1中查询要导出的数据到网格部件2中[/align]
  
[align=left]dr_xls =  dt.Select("类别='医务人员'")[/align]
  
'填充数据到要导出的网格部件中
  
[align=left]For i=0 to dr_xls.Length-1[/align]
  
[align=left]   dt_xls.ImportRow(dr_xls)[/align]
  
[align=left]next[/align]
  
[align=left]'导出本部分数据到指定的文件中[/align]
  
filePath = "
c:\expfile\医务人员.xls
"
  
[align=left]file=网格部件2.ExportToExcel(filePath)[/align]
  原文地址:http://bbs.delit.cn/thread-332-1-1.html

转载请注明出处:

撰写人:度量科技www.delit.cn

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: