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