PDA

نسخه کامل مشاهده نسخه کامل : ارتباط دلفي و Microsoft WORD



kheyri
30-06-2006, 17:36
سلام دوستان
فرض كنيد 100 تا فايل Word داريم. حالا ميخوايم توي اين 100 فايل دنبال يك كلمه خاص بگرديم. آيا با دلفي اينكار امكان پذير هست؟ اگر هست چطوري؟؟؟

soldier
30-06-2006, 18:30
سلام
شما مي تونيد يكي يكي به صورت يك حلقه
يك فايل رو باز كنيد بگرديد اگر بود پيام بده اگر نه
به فايل بعد بره يعني فايل رو ببنده و فايل بعدي رو باز كنه.
اگر توضيحات بيشتري مي خواستي بگو!

NoneForce
30-06-2006, 20:44
سلام
دنبال Word Automation بگرديد.

مرد مباح
01-07-2006, 12:04
سلام
دنبال Word Automation بگرديد.


سلام.
منظورتون ا زاین برنامه چیه؟
این یک سری کامپوننت است که به دلفی لینک میشه؟ یا یه برنامه کمکی؟

چون من برای بعضی مسائل نیاز دارم خروجی های من رو ورد و اکسل بدم.

NoneForce
01-07-2006, 12:36
سلام
به اكثر برنامه ها (مثلا آفيس ) مي توانيد از طريق Automation متصل شويد.
تو دلفي (مثلا 6) توي تب Servers اين ابزارها وجود دارد.
مثلا

uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
Word97: Variant;
begin
Word97 := CreateOLEObject('Word.Application');
Word97.Documents.Add;
Word97.Selection.TypeText('P30World!');
Word97.Visible := True;
Word97 := UnAssigned;
end;

در مورد خروجي گرفتن يكي از بهترين ها SMExport Suite (و SMImport Suite ) است كه به اكثر بافتهاي متداول خروجي مي دهد.


پيدا كردن رشته در فايل ورد :

unit FindText;

interface

function FindTextInFile(const FileName, TextToFind: WideString): boolean;

implementation

uses ComObj, ActiveX, AxCtrls, SysUtils, Classes;

function FindTextInFile(const FileName, TextToFind: WideString): boolean;
var
Root: IStorage;
EnumStat: IEnumStatStg;
Stat: TStatStg;
iStm: IStream;
Stream: TOleStream;
DocTextString: WideString;
begin
Result := False;

if not FileExists(FileName) then
Exit;

if StgIsStorageFile(PWideChar(FileName)) <> S_OK then
Exit;

OleCheck(StgOpenStorage(PWideChar(FileName), nil,
STGM_READ or STGM_SHARE_EXCLUSIVE, nil, 0, Root));

OleCheck(Root.EnumElements(0, nil, 0, EnumStat));

while EnumStat.Next(1, Stat, nil) = S_OK do

if Stat.pwcsName = 'WordDocument' then

if Succeeded(Root.OpenStream(Stat.pwcsName, nil,
STGM_READ or STGM_SHARE_EXCLUSIVE, 0, iStm)) then
begin
Stream := TOleStream.Create(iStm);
try
if Stream.Size > 0 then
begin
SetLength(DocTextString, Stream.Size);
Stream.Position := 0;
Stream.Read(pChar(DocTextString)^, Stream.Size);

Result := (Pos(TextToFind, DocTextString) > 0);
end;
finally
Stream.Free;
end;
Exit;
end;
end;

end.

kheyri
01-07-2006, 17:18
جناب نان فورس خیلی ممنونم از راهنمائی بسیار سودمندتون.
اگر من بخوام که محتویات یک فایل ورد را توی یک فیلد در اس کیو ال ذخیره کنم اولا امکانش هست ؟ و اگر هست چه راهی را پیشنهاد میکنید. یعنی بجای اینکه برنامه خود فایل ورد را بازکنه و در آن جستجو کنه ، در فیلدی که محتویات فایل ورد ذخیره شده جستجو کنه . اینجوری میشه سریعتر و با امکانات کوئری ، جستجوی قویتری ایجاد کرد. ممنون میشم اگه دوستان راهنمایی کنند.

NoneForce
01-07-2006, 18:59
سلام
يك فيلد از نوع Blob (فكر كنم تو SQL نوع Image است) تعريف كنيد و توي اون بريزيد.
نحوه نوشتن و خوندن هم قبلا اينجا معرفي شده.

مرد مباح
02-07-2006, 08:47
خیلی ممنون رفیق.
شما جایی فعالیت دارین؟
در شرکتی مشغول هستید؟

البته قصد فزولی ندارم برای همکاری در این بخش می پزسم

karimi.ali2005
07-01-2011, 23:44
داخل کامپیوتر من جواب نمیده

h_mohamadi
14-02-2015, 18:15
سلام دوستان
من می خواهم با دلفی یک فایل ورود کنار برنامه ام بسازم اگر نبود و ابتدا آن را ذخیره کنم و درون آن یک سری اطلاعات بزنم و سپس آن را باز کنم ولی نمی دانم باید چطوری این کار را انجام دهم
ممنون می شوم راهنمایی بفرمائید.

h_mohamadi
25-05-2015, 11:42
کسی کمک به من نمی کند؟؟؟؟؟