Delphi与Word(二)取得Word 表格中的数据

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

//取得Word 表格中的数据

procedure getWordCellStr;

var WordApp: TWordApplication;

WordDoc: TWordDocument;

DocInx,oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,

PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat: OleVariant;

i,iRow,iCol:integer;

myCell:Cell;

myRow:Row;

begin

memo1.Lines.Clear ;

// ===== 创建对象 =====

if not Assigned(WordApp) then

begin

WordApp:= TWordApplication.Create(nil);

WordApp.Visible := false;

end;

if not Assigned(WordDoc) then

WordDoc:= TWordDocument.Create(nil);

try

DocInx:=1;

oFileName := 'd:\test.doc';

oReadOnly:=true;

CfCversions := EmptyParam;

AddToRctFiles:= EmptyParam;

PswDocument:= EmptyParam;

PswTemplate:= EmptyParam;

oRevert:= EmptyParam;

WPswDocument:= EmptyParam;

WPswTemplate:= EmptyParam;

oFormat:= EmptyParam;

// ===== 打开文件 =====

WordApp.Documents.open(oFileName,CfCversions,oReadOnly,AddToRctFiles,

PswDocument,PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat);

// ===== 关联文件 =====

WordDoc.ConnectTo(WordApp.Documents.Item(DocInx));

//方法(1)==> 规则表

For i := 1 To WordDoc.Tables.Count do //第 i 个表

begin //第 iRow 行

For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do

begin //第 iCol列

For icol := 1 To WordDoc.Tables.Item(i).Columns.Count do

begin

myCell:=WordDoc.Tables.Item(i).Cell(iRow,icol);

memo1.Lines.add(myCell.Range.Text);

end;

end;

end;

//方法(2)==> 不规则表:只有横向合并时

For i := 1 To WordDoc.Tables.Count do //第 i 个表

begin

For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do

begin

myRow:=WordDoc.Tables.Item(i).Rows.Item(iRow);//第 iRow 行

For icol := 1 To myRow.Cells.Count do //第 iCol列

begin

myCell:= myRow.Cells.Item(iCol) ;

memo1.Lines.add(myCell.Range.Text);

end;

end;

end;

//方法(3)==> 不规则:横向、纵向合并时; 任何表格

For i := 1 To WordDoc.Tables.Count do //第 i 个表

begin //第 j 个Cell

for j := 1 To WordDoc.Tables.Item(i).Range.Cells.Count do

begin

myCell := WordDoc.Tables.Item(i).Range.Cells.Item(j);

memo1.Lines.add(myCell.Range.Text);

end;

end;

finally

if Assigned(WordDoc) then // ===== 关闭文件 =====

begin

WordDoc.Close;

WordDoc.Disconnect;

WordDoc.Destroy;

WordDoc := nil;

end;

if Assigned(WordApp) then // ===== 关闭Word =====

begin

WordApp.Quit;

WordApp.Disconnect;

WordApp.Destroy;

WordApp := nil;

end;

end;

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航