// Word 文档 转换成 Text 文档
// Created 2004-6-28
// @author pal
// windows2003, office2003, delphi7
// uses WordXP, Variants
TDoc2Text = class(TObject)
private
FWordApp: TWordApplication;
FWordDoc: TWordDocument;
FIsEnable: Boolean;
public
constructor Create;
destructor Destroy; override;
function Transfer(DocFileName, TxtFileName: string): Boolean;
property IsEnable: Boolean read FIsEnable write FIsEnable;
end;
{ TDoc2Text }
constructor TDoc2Text.Create;
begin
FWordApp := TWordApplication.Create(nil);
FWordDoc := TWordDocument.Create(nil);
try
FWordApp.Connect;
FWordApp.Visible := False;
{Turn Spell checking of because it takes a long time if enabled and slows down Winword}
FWordApp.Options.CheckSpellingAsYouType := False;
FWordApp.Options.CheckGrammarAsYouType := False;
FIsEnable := True;
except
FIsEnable := False;
Abort;
end;
end;
destructor TDoc2Text.Destroy;
begin
try
FWordApp.Quit;
FWordApp.Disconnect;
except
on E: Exception do
begin
FWordApp.Disconnect;
end;
end;
FreeAndNil(FWordApp);
FreeAndNil(FWordDoc);
inherited;
end;
function TDoc2Text.Transfer(DocFileName, TxtFileName: string): Boolean;
var
FileName: OleVariant;
Index: OleVariant;
FileFormat: OleVariant;
ovVisible: OleVariant;
begin
Result := False;
if not FIsEnable then
Exit;
FileName := DocFileName;
try
// EmptyParam 空参数
ovVisible := False;
FWordApp.Documents.Open2000(FileName, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam, ovVisible);
Index := 1;
FWordDoc.ConnectTo(FWordApp.Documents.Item(Index));
FileName := TxtFileName;
FileFormat := wdFormatText;
FWordDoc.SaveAs2000(FileName, FileFormat);
FWordDoc.Disconnect;
FWordApp.Documents.Item(Index).Close(EmptyParam, EmptyParam, EmptyParam);
Result := True;
except
Result := False;
Abort;
end;
end;