PDA

View Full Version : ارتباط با office



xboycooper
سه شنبه 11 اسفند 1388, 21:29 عصر
سلام :چشمک:
من اجتیاج به یه سری راهنمایی (کلید واژه) و نمونه برنامه در مورد ارتباط با نرم افزارهای آفیس دارم .
در خقیقت در برنامه ای که دارم مینویسم میخوام کاربر با انتخاب برنامه مورد نظرش (مثل word یا excel) اون برنامه باز شه و بعد از انجام کار و هنگام بسته شدن فایل در محل تعیین شده یا دیتابیس ذخیره شه . همچنین موقع فراخوانی دوباره همون فایل در برنامه مورد نظر آفیس باز شه .

متاسفانه هیچ گونه تجربه ای در این زمینه ندارم . اگه ممکنه یک منبع یا آموزش خوب رو معرفی کنید .
ممنون :لبخندساده:

حسین خانی
سه شنبه 11 اسفند 1388, 22:39 عصر
با سلام :لبخندساده:
می توانید با استفاده از توابع Api هر فایلی را در محیط مربوطه خود باز کنید (به شرطی که برنامه مربوطه نصب باشد) !
مثلا Doc را در محیط Word و ...
uses
ShellApi
ShellExecute(HInstance, 'open',pChar(OpenDialog1.FileName),nil, nil, SW_SHOW);
برای ذخیره کردن هر فایل در بانک ابتدا فیلدی از نوع داده ( Access = OLE Object یا Sql Server = Image) ایجاد کنید سپس در دلفی با دستور زیر فایل را ذخیره نمائید :
ADOTable1NameField.LoadFromFile(OpenDialog1.FileNa me);

موفق باشید ...

xboycooper
چهارشنبه 12 اسفند 1388, 09:37 صبح
ممنون :چشمک:
با کدی که بالا نوشتین فقط میشه فایل رو از طریق مسیری که اونجا ذخیره شده فراخوانی کرد . درسته ؟
مثلا اگر فایل در قیلدی از نوع Image در Sql Server دخیره شده باشه چطور ؟


من یکم با worddocument و Wordapplication کار کردم تونستم یه فایل جدید با مشخصاتی که میخوام (سایز - فونت - استایل و ...) در محیط ورد باز کنم . حالا نمیدونم چه کدی لازمه که بعد از انجام کار و موقع بسته شدن word بدون اینکه کاربر بخواد فایل رو در مسیری ذخیره کنه فایل در دیتابیس ذخیره شه . و همچنین بعدا برای تغییرات دوباره همون فایل رو فراخوانی کنم .

میتونید یه نمونه برنامه کوچیک از شیوه فراخوانی و ذخیره (مستقیم در دیتابیس نه در فایل و مسیر جدا) بذارید ؟

با تشکر :لبخندساده:

حسین خانی
چهارشنبه 12 اسفند 1388, 14:10 عصر
با کدی که بالا نوشتین فقط میشه فایل رو از طریق مسیری که اونجا ذخیره شده فراخوانی کرد . درسته ؟ بله

مثلا اگر فایل در قیلدی از نوع Image در Sql Server دخیره شده باشه چطور ؟ با استفاده از SaveDialog از بانک در مسیری بریزید سپس با همون دستور Api که گفتم بازش کنید و با بستن فایل با یه دستور اونو از مسیر پاک کنید !

موفق باشید ...

xboycooper
چهارشنبه 12 اسفند 1388, 16:49 عصر
با این کد یه فایل خالی و از قبل تنظیم شده رو باز میکنم ...

Word:=CreateOLEObject('Word.Application');
Word.Visible:=True;
Word.Documents.Open(GetCurrentDir+'\A4.doc');

برای ذخیره در فایل موقت هم دستور زیر رو استفاده میکنم ...

Word.Documents.SaveAs(FileName:=GetCurrentDir+'\te mp.doc');

این دستور ذخیره رو کجا باید بنویسم تا وقتی کاربر word رو بست فایل temp ایجاد شه ؟ (رویداد حروج word چطوری بدست میاد)
این فایل doc هم باید به صورت Stream در بانک sql دخیره کنم دیگه ؟

xboycooper
پنج شنبه 13 اسفند 1388, 19:17 عصر
دوستان اگه کسی در این مورد چیزی میدونه لطفا یه راهنمایی کوچیک بکنه تا حداقل بدونم دنبال چی باید برم .

این دستور ذخیره رو کجا باید بنویسم تا وقتی کاربر word رو بست فایل temp ایجاد شه ؟ (رویداد حروج word چطوری بدست میاد)

ممنون .

xboycooper
جمعه 14 اسفند 1388, 10:55 صبح
بالاخره تونستم مشکل رو حل کنم :لبخند:
البته با استفاده از WordApplication
با این کد فایل رو فراخوانی کردم

procedure TForm1.Button1Click(Sender: TObject);
var fn:OleVariant;
begin
fn:=GetCurrentDir+'\A4.doc';
WordApplication1.Connect;
Wordapplication1.Visible:= True;
WordApplication1.Documents.Open(fn,EmptyParam,Empt yParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam ,EmptyParam,EmptyParam,EmptyParam,EmptyParam,Empty Param,EmptyParam,EmptyParam,EmptyParam);
end;


با این کد هم با زدن دکمه خروج ورد فایل temp ایجاد میشه و ورد بسته میشه .


procedure TForm1.WordApplication1DocumentBeforeClose(ASender : TObject;
const Doc: _Document; var Cancel: WordBool);
var
temp,wdformat: OleVariant;
begin
temp:=GetCurrentDir+'\temp.doc';
wdformat := 3;
WordApplication1.ActiveDocument.SaveAs(temp,wdform at,EmptyParam,EmptyParam,EmptyParam,EmptyParam,Emp tyParam,EmptyParam,EmptyParam,EmptyParam,EmptyPara m,EmptyParam,EmptyParam,EmptyParam,EmptyParam,Empt yParam);
WordApplication1.ActiveDocument.Close(EmptyParam,E mptyParam,EmptyParam);
WordApplication1.Quit;
WordApplication1.Disconnect;
end;

فقط مونده ذخیره این فایل temp در رکورد مورد نظر بانک sql که این قسمتش راحته :بامزه:

یا علی

joker
جمعه 14 اسفند 1388, 11:05 صبح
وقتی یک متنی را به Word از این طریق ارسال میکنیم ، با چه دستوری میشه رنگش را تغییر داد ؟

xboycooper
جمعه 14 اسفند 1388, 11:14 صبح
مطمئن نیستم ولی فکر کنم با این دستور

WordApplication1.Selection.Font.Color