如何提高delphi+Word写入数据速度???
答题人: xxmmmx(踢踏)如果格式不复杂,或者格式比较规范,可以先写入StringList中,然后复制到Word中,然后进行排版转换,这样速度可以提高很多。比如:sListMain为TStringList,记录的内容非常规范,记录的是各个字段的信息
-----------------------------------------
序号 字段名称 字段别名 字段类型 默认值 允许空 主键 输入
1 MeasureID 器具编号 Varchar(8) N Y 手工
2 Name 器具名称 Varchar(32) Y   手工
-----------------------------------------
然后在Word中转为表格    Doc:=WordApp.Documents.Add;
    Doc.Range.Delete;
    Doc.Range.InsertAfter(sListMain.Text);
    //定义全文的字体为12,粗体
    Ran:=Doc.Range;
    Ran.Font.Size:=12;
    Ran.Bold:=true;    //文章标题的字体为16,粗体,中心对齐
    Ran:=Doc.Paragraphs.Item(1).Range;
    Ran.Font.Size:=16;
    Ran.Bold:=true;
    Ran.ParagraphFormat.Alignment:=wdAlignParagraphCenter;    //各个表名的字体为14,粗体
    for i:=0 to iTableMax-1 do
      Doc.Paragraphs.Item(iRan[i,0]-1).Range.Font.Size:=14;    sBarText(0,'正在排版内容,请稍候······');
    ProgressBar1.Position:=60;
    Application.ProcessMessages;    //把一个范围内的数据转化为表格,表格识别符为制表符(#9)
    for i:=iTableMax-1 downto 0  do
    begin
      Ran:=Doc.Range(Doc.Paragraphs.Item(iRan[i,0]).Range.Start,
        Doc.Paragraphs.Item(iRan[i,1]).Range.End);
      Ran.ConvertToTable(#9,iRan[i,1]-iRan[i,0],8);
    end;    ProgressBar1.Position:=75;
    //各列的宽度
    for i:=iTableMax downto 1  do
    begin
      Doc.Tables.Item(i).Columns.Item(1).Width:=35;
      Doc.Tables.Item(i).Columns.Item(2).Width:=100;
      Doc.Tables.Item(i).Columns.Item(3).Width:=100;
      Doc.Tables.Item(i).Columns.Item(4).Width:=80;
      Doc.Tables.Item(i).Columns.Item(5).Width:=50;
      Doc.Tables.Item(i).Columns.Item(6).Width:=50;
      Doc.Tables.Item(i).Columns.Item(7).Width:=35;
      Doc.Tables.Item(i).Columns.Item(8).Width:=35;
    end;