zoukankan      html  css  js  c++  java
  • Delphi批量输出内容到Excel的注意事项

    想要输出内容到excel速度比较快,有几个窍门:

    1、 在输出数据前将excel的页面刷新关闭,数据输出结束后再打开页面刷新。例如:

    var

     gExcelApp : _Application;

    gExcelApp.ScreenUpdating[0] := False;

    //输出内容。

    gExcelApp.ScreenUpdating[0] := True;

    2、减少excel中对象的深层次引用。比如不要多次的用

    application.workbook.worksheet.range[“A1”]这个引用,可以定义一个range变量,然后赋值,以后直接访问这个变量,减少多次的对象引用可以减少系统开销。

    3、定义区域一次设置一次填充。修改excel中区域的格式或者填充大片区域时可以使用数组方式一次操作,将一个区域定义成range,将需要填充的数据定义成和range行列对应的二维数组,然后直接填充,不要单个单元格一个一个的移位填充。例如:

    Var

     LDataArray :Variant;

     lCell1,lCell2,larrayRange :ExcelRange;

    //定义二维数组

    LDataArray := VarArrayCreate([0, LRow, 0, LCol-1], varVariant);

    //填充二维数组数据

    for i :=0 to LRow do

     for j :=0 to LCol-1 do

    LDataArray[i,j] := AData.Data[i][j+1];

    //定义区域

    lCell1 := AData.ToPointRange.Offset[0,1];

    lCell2 := AData.ToPointRange.Offset[LRow,LCol];

    larrayRange :=gExcelApp.Range[lCell1,lCell2];

    //设置格式

    larrayRange.NumberFormat:='###,###,##0.000';

    //整个区域填充

    larrayRange.Formula := LDataArray;

     

    Range := ws.Range[ws.Cells[1, 1],  ws.Cells[iRowCount + 1, iColCount+1]];
          Range.Value := Data;
          Range.Columns.AutoFit;

  • 相关阅读:
    新的页面事件的添加
    excel里数字0不显示
    VB6接口、对象比较等
    SQL SERVER服务停止和启动命令行
    如何更改VS2008的字体和大小
    如何部署windows service
    模式应用 - 利用工厂模式制作自己的"小程序测试工厂"
    解决Oracle Temp01.dbf不断变大的问题
    如何配置VS2008让它用外置IIS进行调试
    使用JQuery Autocomplete插件(一)
  • 原文地址:https://www.cnblogs.com/enli/p/1846388.html
Copyright © 2011-2022 走看看