CSDN博客

img LuckyJan

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

发表于2003/6/4 17:16:00  1653人阅读

分类: Delphi与Word

//取得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;

0 0

相关博文

我的热门文章

img
取 消
img