Delphi操作Word中的表


本文整理自网络,侵删。

 
Procedure GetWordCellStr;
var

    WordApp: TWordApplication;
    WordDoc: TWordDocument;
    DocInx,FileName,CfCversions,IsReadOnly,AddToRctFiles,PswDocument,
    PswTemplate,Revert,WPswDocument,WPswTemplate,FormatWord: OleVariant;
    i,iRow,iCol: Integer;
    myCell: Cell;
    myRow: Row;
begin
  Memo.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;
    FileName := ′d:/test.doc′;
    IsReadOnly:=true;
    CfCversions := EmptyParam;
    AddToRctFiles:= EmptyParam;
    PswDocument:= EmptyParam;
    PswTemplate:= EmptyParam;
    Revert:= EmptyParam;
    WPswDocument:= EmptyParam;
    WPswTemplate:= EmptyParam;
    FormatWord:= EmptyParam;     
    // ===== 打开文件 =====                         
    WordApp.Documents.open(FileName,CfCversions,IsReadOnly,AddToRctFiles,
       PswDocument,PswTemplate,Revert,WPswDocument,WPswTemplate,FormatWord);
    // ===== 关联文件 =====
    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;

相关阅读 >>

Delphi xe5、6、7在android或者ios上使用ansistring和ansichar

Delphi 操作系统时间与web标准时间校正

Delphi 调用极光推送服务端http api实例

Delphi来实现全屏截图

Delphi 多种编码转换

Delphi createmutex建立互斥对象,并且给互斥对象起一个唯一的名字

Delphi xe 在andriod程序中获取外置sd卡根目录

Delphi判断文件夹(目录)是否存在,不存在就创建一个

Delphi实现屏幕截图、窗口截图、指定区域截图

Delphi windows 编程[1] - 窗体生成的过程一

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...