1.选择表格内容并将其中的文字提出
sset.SelectOnScreen; //选择屏幕上的物体
count :=sset.count; //选择集中实体的个数
for I := 0 to count-1 do
if sset.item(i).entityname = 'AcDbText' then //判断是否为文字
begin
text:= sset.item(i).textstring;//文字字符串提出
point:=sset.item(i).InsertionPoint;
tstring.add(text); //文字字符加入数组
xstring.add(vartostr(point[0])) ;//文字X坐标加入数组
ystring.add(vartostr(point[1])) ;;//文字Y坐标加入数组
end;
2.文字的判别和处理
1)遍历数组,将所有表头文字(序号,代号,名称,数量。。。)找到并记录它们的X,Y坐标植,为下面表格中文字的分栏提供判断标准.
例: if pos('序号',text(i))=1 then //找到“序号”
begin
xhx.add(floattostr(point[0]));//序号附近的X坐标
xhy.add(floattostr(point[1]));//序号附近的Y坐标
end;
2)再次遍历数组,根据1)中得到的X,Y值将文字分栏,例如
if (x<dhx[0]) and (x>xhx[0)-10) //文字的X植小于代号X值大于序号X值
and (y<xhy[0]-8) then //文字的Y植小于序号Y值
begin
tstring.add(text); //文字加入序号栏数组
xstring.add(floattostr(x)) ; //文字的X植加入序号栏X数组
ystring.add(floattostr(y)) ;文字的X植加入序号栏Y数组
end;
3)对每一相应栏数组中的文字进行排序,得出每一单元格的文字。
a.按Y值由大到小重排列数组
b.如果每一格文字没有连续,既有两个或多个字在同一格中,则按X值由小
到大合并文字
4)将每个单元格的文字写入EXCEL相应的位置,我的做法是将EXCEL表头文件先做好,然后在DELPHI中用循环写入其相应的位置,再另存文件.