bcb中用数组给Excel的区域赋值

来源:互联网 发布:sql数据库置疑修复工具 编辑:程序博客网 时间:2024/05/01 02:20
 今天导出Excel文件时,由于数据量比较大,一个一个单元格的写,速度比较慢慢。我在自己的机器上测试了一下,如果数据量为5万多时,需要的时间大概要8分钟左右,速度实在太慢了。我想能不能给Excel的区域赋值呢,这样的速度可能会快一点。于是自己上网查了查资料,但是这部分的资料大部分是Vb的,BCB关于区域赋值的资料几乎没有。于是自己在机器上试试一两个小时,终于给试出来了,不敢私藏,拿出来给大家看看,看看有没有更好的办法。

  代码如下:

  1. Variant   ExcelApp,  Sheet;
  2.     try
  3.     {
  4.         ExcelApp=Variant::CreateObject( "Excel.Application");
  5.     }
  6.     catch(...)
  7.     {
  8.         MessageBox(Handle, "无法启动Excel! ""信息提示 ",MB_ICONSTOP|MB_OK);
  9.         return;
  10.     }
  11.     ExcelApp.OlePropertySet( "Visible",false);
  12.     ExcelApp.OlePropertyGet("Workbooks").OleFunction("Add", 1);
  13.     Sheet = ExcelApp.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Sheets", 1);
  14.     String str[4];
  15.     str[0] = "11";
  16.     str[1] = "2";
  17.     str[2] = "33";
  18.     str[3] = "44";
  19.     int   Bounds[4]   =   {0,1,0,3}; //二维数组 相当于 Datas[1][4]
  20.     Variant   Datas=   VarArrayCreate(Bounds, 3, varVariant);
  21.     for(int   i=0;i<1;i++)
  22.     {
  23.           for(int   j=0;j<4;j++)
  24.           {
  25.                   Datas.PutElement(str[j],i,j);
  26.           }
  27.     }
  28.     Sheet.OlePropertyGet("range","A1:D1").OlePropertySet("Value", Datas);
  29.     ExcelApp.OlePropertyGet("ActiveWorkbook").OleFunction("SaveAs""c://11.xls");
  30.     ExcelApp.OleFunction("Quit");
  31.     Sheet = Unassigned;
  32.     ExcelApp = Unassigned;

原创粉丝点击