PDA

View Full Version : خواندن فایل Excel و نمایش آن



iman_s52
چهارشنبه 13 دی 1385, 19:33 عصر
فایل رو خوندم :


strPath := trim(dlgOpen.FileName);
XlsApp := CreateOLEObject('Excel.application');
XlsApp.Workbooks.open(strPath);
Sheet := XlsApp.WorkSheets[1] ;

حالا اگه بخوام از حافظه خارجش کنم چکار باید بکنم ؟؟
‍Close , Quit رو امتحان کردم خطا داد.

vcldeveloper
جمعه 15 دی 1385, 08:43 صبح
GetActiveOleObject('Excel.Application').QueryInter face(_Application, XlsApp);
XlsApp.Quit(_vFalse,EmptyParam,EmptyParam);



‍Close , Quit رو امتحان کردم خطا داد.
چه خطایی میده؟!

Valadi
جمعه 15 دی 1385, 17:51 عصر
جستجو کن مطالب جالبی دستگیرت می شه چون چند وقت بیش یکی از دوستان سورس برنامه ای را قرارداده بود

arshia_
شنبه 16 دی 1385, 08:27 صبح
خصوصیت free رو امتحان نکردی؟

حرفه ای
شنبه 16 دی 1385, 10:02 صبح
خصوصیت free رو امتحان نکردی؟

من هم با عرشیا موافقم باید از دستور Free استفاده کنی

iman_s52
شنبه 16 دی 1385, 10:50 صبح
Free که میذارم میگه که Invalid Variant Operation

iman_s52
شنبه 16 دی 1385, 10:51 صبح
البته واسه Close و Quit هم همین Error رو می زنه.

vcldeveloper
یک شنبه 17 دی 1385, 08:49 صبح
موافقم باید از دستور Free استفاده کنی
Free صرفا Object ایی که در برنامه تون درست کردید رو آزاد میکنه و تاثیر در بسته شدن برنامه Excel ایی که توسط اون Object باز شده، نداره.

حرفه ای
یک شنبه 17 دی 1385, 09:05 صبح
البته فرمی رو که Excel رو داخل اون باز کردی free کنی مشکل حله
و برای show مجدد باید دوباره ساخته بشه البته از ProjectManagment باید پاک بشه دستور
Application.CreateForm(TForm1, Form1);
Form1.ShowModal

در OnClose فرم1 باید بنویسی
Action=caFree

( پاک کردن صورت مسئله )

vcldeveloper
یک شنبه 17 دی 1385, 09:33 صبح
البته فرمی رو که Excel رو داخل اون باز کردی free کنی مشکل حله
عزیز جان، برنامه Excel به عنوان یک برنامه External در پس زمینه اجرا میشه. به فرض که شما فرم برنامه خودت رو هم Free کنی، شی مربوطه در برنامه خودت رو هم Free کنی، اما اینها دلیل نمیشه که برنامه Excel هم بسته بشه!

iman_s52
یک شنبه 17 دی 1385, 09:44 صبح
کاملا درسته.
Excel بسته نمیشه و همینطور باز می مونه.

FSarab
یک شنبه 17 دی 1385, 23:21 عصر
از کامپوننت TExcelApplication استفاده کن

procedure TfrmMain.Button2Click(Sender: TObject);
var
ovFilename: OleVariant;
lcid: Integer;
xa: TExcelApplication;
begin
xa := TExcelApplication.Create(nil);
lcid := LOCALE_USER_DEFAULT;
ovFilename := 'D:\T.xls';
xa.Workbooks.Add(EmptyParam, lcid);
xa.ActiveWorkbook.SaveCopyAs(ovFilename, lcid);
xa.Workbooks.Open(ovFilename, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, lcid);
xa.Connect;
xa.Visible[lcid] := True;
end;

iman_s52
سه شنبه 19 دی 1385, 12:20 عصر
اینطوری دیگه Excel باز نمی مونه ؟؟؟
شما تست کردین ؟؟؟

vcldeveloper
چهارشنبه 20 دی 1385, 11:18 صبح
اینطوری دیگه Excel باز نمی مونه ؟؟؟
TExcelApplication هم به همون طریقی که خودت قبلا به Excel وصل میشدی، به Excel وصل میشه و عملا کار خاصی برات انجام نمیده.
برای بستن Excel باید متد Quit رو فراخوانی کنی.