关于网友提出的“ 提高delphi+Word写入数据速度实例”问题疑问,本网通过在网上对“ 提高delphi+Word写入数据速度实例”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 提高delphi+Word写入数据速度实例
描述: 如何提高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;
解决方案1: 偶来接分啦
以上介绍了“ 提高delphi+Word写入数据速度实例”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2364874.html