📄 unit3.~pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WordXP, OleServer, StdCtrls, ExcelXP;
type
TForm1 = class(TForm)
Button1: TButton;
WordApplication: TWordApplication;
WordDocument: TWordDocument;
OpenDialog: TOpenDialog;
Label1: TLabel;
Button2: TButton;
Memo1: TMemo;
Edit1: TEdit;
exclplctn1: TExcelApplication;
exclwrksht1: TExcelWorksheet;
exclwrkbk1: TExcelWorkbook;
procedure Button1Click(Sender: TObject);
// 取word文档中非表格元素的试验方法
// 1 :删表, 取非空字符串
procedure GetString1;
// 2 :返回表上面一行的字符串
procedure GetString2;
procedure testExcal;
//
procedure getWord;
//判断字符串是否为空
function JudgeString(var str:string):boolean;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
word_path:OleVariant;
implementation
uses StrUtils;
{$R *.dfm}
function TForm1.JudgeString(var str:string):boolean;
var
strTem:string ;
begin
strTem:=Trim(str);
if pos(#13,strtem)=0 then
begin
result:=true; //true代表该行是空
Delete(strtem,pos(#13,strtem),1) ;
end
else result:=false; //true代表该行是不是空
end;
procedure TForm1.getWord;
var
unit1,count,s: OleVariant;
DocInx:OleVariant;
i:Integer;
path:OleVariant;
temp:string;
begin
count:=1;
// unit1:=wdTabLeaderLines;
unit1:=wdCharacter;
//word 初始化
Memo1.Clear;
path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text ;
WordApplication.Connect;
WordApplication.Documents.Open(path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
DocInx:=1;
WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));
i:=0;
WordDocument.Paragraphs.Item(1).Range.Select;
if Trim(WordApplication.Selection.Text)='' then ShowMessage('test');
// temp:= Trim(WordApplication.Selection.Text);
// WordApplication.Selection.Delete(unit1,count) ;
// Delete(temp,pos(#13,temp),1) ;
// WordDocument.Paragraphs.Item(2).Range.Select;
// temp:= Trim(WordApplication.Selection.Text);
// Memo1.Lines.Add(Trim(WordApplication.Selection.Text)) ;
Memo1.Lines.Add((temp)) ;
// inc(i);
Memo1.Lines.Add('END') ;
WordDocument.Save;
// WordApplication.Documents.Save();
WordDocument.Close;
WordApplication.Disconnect;
WordDocument.Disconnect;
WordApplication.Quit;
end;
procedure TForm1.testExcal;
var
path:string;
Temp_Worksheet: _Worksheet;
begin
path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls';
//excal 初始化
exclplctn1.Connect;
exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Open(path,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, 0));
Temp_Worksheet:= exclwrkbk1.Worksheets.Item[2] as _worksheet;
exclwrksht1.ConnectTo(Temp_Worksheet);
exclwrksht1.Name:='test1';
ShowMessage(exclwrksht1.Name);
exclwrkbk1.Save;
exclwrkbk1.Close(false);
exclplctn1.Disconnect;
exclwrksht1.Disconnect;
exclplctn1.Quit;
end;
procedure TForm1.GetString2;
var
unit1,count,s: OleVariant;
DocInx: OleVariant;
t,i:Integer;
begin
Memo1.Clear;
count:=1;
unit1:=wdTabLeaderLines;
word_path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text ;
WordApplication.Connect;
WordApplication.Documents.Open(word_path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
DocInx:=1;
WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));
i:=WordDocument.Tables.Count;
t:=WordDocument.Styles._AddRef;
Memo1.Lines.Add(IntToStr(i));
end;
procedure TForm1.GetString1;
var
TempStrings:string;
unit1,count,s: OleVariant;
DocInx: OleVariant;
k,t,i:Integer;
Temp_Worksheet,Temp_Worksheet2: _Worksheet;
temp,temp2,temp3:string;
path:string ;
add:boolean;
begin
path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls';
// temp:=TStringList.Create;
//word 初始化
Memo1.Clear;
count:=1;
unit1:=wdCharacter;;
word_path:='C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\'+Edit1.Text ;
WordApplication.Connect;
WordApplication.Documents.Open(word_path, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
DocInx:=1;
WordDocument.ConnectTo(WordApplication.Documents.Item(DocInx));
//excal 初始化
exclplctn1.Connect;
exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Add(EmptyParam, 0));
//执行代码区域
i:=1; add:=false; k:=1; t:=1;
t:=WordDocument.Tables.Count;
Memo1.Lines.Add('现在的表数是'+IntToStr(t)) ; Memo1.Lines.Add('____________________________') ;
while WordDocument.Tables.Count<>0 do
begin
WordDocument.Paragraphs.Item(k).Range.Select;
temp:=WordApplication.Selection.Text ;
temp:=LeftStr(temp,18) ;
// Memo1.Lines.Add('测试名称是:'+temp+' k的值: '+IntToStr(k));
while Trim(temp)='' do
begin
WordApplication.Selection.Delete(unit1,count);
WordDocument.Paragraphs.Item(k).Range.Select;
temp:=WordApplication.Selection.Text ;
end;
{ if not JudgeString(temp) then
begin
inc(k);
WordDocument.Paragraphs.Item(pk).Range.Select;
temp:=WordApplication.Selection.Text ;
// Memo1.Lines.Add('进入空temp判断 测试名称是:'+temp+' k的值: '+IntToStr(k));
end; }
{ if (k-1<>0) then
begin
WordDocument.Paragraphs.Item(k-1).Range.Select;
temp3:= WordApplication.Selection.Text ;
if JudgeString(temp3) then inc(k);
end ; }
{ WordDocument.Paragraphs.Item(k+1).Range.Select;
temp2:= WordApplication.Selection.Text ;
if JudgeString(temp2) then inc(k); }
Memo1.Lines.Add('测试名称是:'+temp+' k的值: '+IntToStr(k));
// 测试重名问题
//创建workbook中的worksheet
Temp_Worksheet := exclwrkbk1.Worksheets.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0) as _Worksheet;
exclwrksht1.ConnectTo(Temp_Worksheet);
exclwrksht1.Name := temp+IntToStr(k);
exclwrksht1.Activate;
// ShowMessage(exclplctn1.Workbooks.Item[1].Name);
WordDocument.Tables.Item(1).Select;
WordApplication.Selection.Copy;
exclwrksht1.Paste(exclwrksht1.Range['A1', 'F1']);
//删除表
WordDocument.Tables.Item(1).Delete;
Memo1.Lines.Add('正在删除表: '+IntToStr(i)+' ...') ;
// Memo1.Lines.Add('现在的表数是'+IntToStr(WordDocument.Tables.Count)) ;
Inc(i);
inc(k);
end;
Memo1.Lines.Add('删除表完成') ;
Memo1.Lines.Add(IntToStr(WordDocument.Paragraphs.Count)) ;
exclwrkbk1.SaveCopyAs('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls');
{ i:=1;
while i< WordDocument.Paragraphs.Count do
begin
memo1.Lines.Add('文字的行数是: '+IntTostr(i));
WordDocument.Paragraphs.Item(i).Range.Select;
// Memo1.Lines.Add('正在读'+IntToStr(i)) ;
if (WordApplication.Selection.Text<>#13)then
begin
TempStrings[i-1]:= WordApplication.Selection.Text ;
// Memo1.Lines.Add(WordApplication.Selection.Text) ;
// :=WordApplication.Selection.Text
// exclplctn1.Workbooks.Item.Name;
// ShowMessage(exclplctn1.Workbooks.Item.Name);
inc(i);
// exclwrksht1.
end;
Inc(i);
end;
exclwrkbk1.SaveCopyAs('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\test.xls');
exclplctn1.Connect;
exclwrkbk1.ConnectTo(exclplctn1.Workbooks.Open(path,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, 0));
i:=1;
// for i:=1 to exclwrkbk1.Worksheets.Count do
while( i<exclwrkbk1.Worksheets.Count) do
begin
Memo1.Lines.Add('要改的表数:'+IntToStr(exclwrkbk1.Worksheets.Count)) ;
Temp_Worksheet2:= exclwrkbk1.Worksheets.Item[i] as _worksheet;
Memo1.Lines.Add('正在处理:'+IntToStr(i)) ;
exclwrksht1.ConnectTo(Temp_Worksheet2);
Memo1.Lines.Add(TempStrings[i-1]) ;
exclwrksht1.Name:=TempStrings[i-1];
inc(i);
end; }
//收尾工作
Memo1.Lines.Add('完成') ;
WordDocument.Save;
WordDocument.Close;
WordApplication.Disconnect;
WordDocument.Disconnect;
WordApplication.Quit;
// exclwrkbk1.Save;
exclwrkbk1.Close(false);
exclplctn1.Disconnect;
exclwrksht1.Disconnect;
exclwrkbk1.Disconnect;
exclplctn1.Quit;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// test
// GetString2;
GetString1;
// testExcal;
// getWord;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//fdf
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
filename:string;
begin
DateTimeToString(fileName, 'yyyymmdd-hhmm', Now);
// MkDir('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log') ;
// memo1.Lines.SaveToFile('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log' + fileName + '.txt');
// MkDir('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log') ;
memo1.Lines.SaveToFile('C:\Documents and Settings\Administrator.2B6FC08065B2401\桌面\test\log\' + fileName + '.txt');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -