您的当前位置:首页正文

用Delphi合并Word表格中单元格

2022-08-29 来源:星星旅游


用Delphi合并Word表格中单元格

] //合并Word 表格中单元格

procedure mergeWordCell;

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: est.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));

//合并第一、二列

iStart:=WordDoc.Tables.Item(i).Cell(1,1).Range.Start;

myCol:= WordDoc.Tables.Item(i).Columns.Item(2);

iEnd:=myCol.Cells.Item(myCol.Cells.Count).Range.End_;

myRange:=WordDoc.Range;

myRange.Start:=iStart;

myRange.End_ :=iEnd;

myRange.Cells.Merge;

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;

取得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: est.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;

取得Word文件的数据

//取得Word文件的数据

procedure getWordStr;

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://est.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): 取整个文本的字符内容,包含表格

s := WordDoc.Range.text;

//方法(2): 取 1 -- 4 位的字符 ,包含表格

myRange:=WordDoc.Range;

myRange.Start:=0;

myRange.End_ :=4;

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;

因篇幅问题不能全部显示,请点此查看更多更全内容