PDA

View Full Version : کار با اکسل در دلفی و استفاده از اکتیوایکس



msoleiman
شنبه 14 شهریور 1388, 15:10 عصر
سلام دوستان
من میخواهم با چند تا فایل اکسل ارتباط بر قرار کنم و از هر کدام از این فایلها اطلاعاتی را بگیرم و پردازش کنم بعد اومدم اکتیو ایکس مربوطه را نصب کردم در دلفی 7 ولی نتونستم از قسمت اکسل آن استفاده کنم یعنی اصلا نتونستم فایلی بهش بدم که بخونه خواهش میکنم مرا راهنمایی کنید

با تشکر

Zahed2008
شنبه 14 شهریور 1388, 17:33 عصر
سلام، چرا از كتابخانه ExcelXP استفاده نمي كنيد. كار باهاش خيلي راحته و امكانات زيادي داره.


uses ExcelXP ;
...
var
Xlapp1 : TExcelApplication;
Workbook1 : _Workbook;
Sheet1 : _WorkSheet;
range,data1: Variant;
...
begin
XLApp1:=TExcelApplication.Create(Application);
XLApp1.AutoConnect:=True;
XLApp1.AutoQuit:=True;

Workbook1:= XLApp1.Workbooks.Open('book.xls',null,null,
null,null,null,null,null,null,null,null,null,null, null,null,0);

Sheet1 := XLApp1.WorkSheets.Get_Item( 'Sheet1' ) as _WorkSheet;
Sheet1.Activate(0);

MaxRow := Sheet1.UsedRange[0].Rows.Count;
MaxCol := Sheet1.UsedRange[0].Columns.Count;

range := Sheet1.UsedRange[0];
data1:= range.Value; // All Data in This Range

msoleiman
سه شنبه 17 شهریور 1388, 13:31 عصر
سلام من این روش استفاده از کتابخانه را متوجه نشدم از همون روش اکتیو ایکس کسی نمیتونه من را کمک کند ؟؟
خواهش میکنم کمک کنید...

Tasnim
سه شنبه 17 شهریور 1388, 15:33 عصر
میتونی از کامپونت های تب server نیز استفاده کنی

Zahed2008
شنبه 21 شهریور 1388, 12:24 عصر
سلام، من كه هر كدي لازم بود واست گذاشتم. فقط كافيه كپي كني و بجاي 'book.xls' مسير فايل مورد نظرت(مثلا 'F:\book1.xls' ) و بجاي 'Sheet1' اسم شيت مورد نظرتو مي ذاري. همه داده ها تو Value ذخيره مي شه و با يه حلقه For مي توني با MaxCol و MaxRow كه بترتيب شماره ستون و رديف ماكزيمم تو فايل اكسل مورد رو مي ده، بهشون دسترسي پيدا كني يا توي يه stringgrid نمايش بدي.
بعد از اجراي تغييرات مورد نظرت مي توني بصورت زير ذخيره و بعد اكسل مربوطه رو ببندي:


for j := 1 to MaxRowl do begin
for j := 1 to MaxCol do begin
data1[i,j] := ....
end
end
...
Sheet1.Range[RefToCell(1, 1), RefToCell(numRow,numCol )].Value2 := data1;
// Save All Data in This Range
Workbook1.Save(0);
XLApp1.Disconnect;
Xlapp1.Free;
اين تابع RefToCell رو هم بايد بنويسي:

function RefToCell(ARow, ACol: Integer): string;
begin
Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end;( وقتي اينقدر آسونه، چرا ديگه مي خواي با اكتيو ايكس كار كني ؟! :متفکر: چون موقع نصب برنامت، بايد اكتيو ايكس رو همراش ببري و رجيستر كني.)

Karoun
سه شنبه 05 مرداد 1389, 22:26 عصر
سلام این ExcelXP را از کجا می شود تهیه کرد؟

Felony
سه شنبه 05 مرداد 1389, 23:47 عصر
سلام این ExcelXP را از کجا می شود تهیه کرد؟

به Uses برنامتون عبارت ExcelXP رو اضافه کنید .

hosseinmehr
پنج شنبه 14 بهمن 1389, 14:30 عصر
تابع RefToCell فقط تا 26 ستون را پشتیبانی میکنه که اینجوری من اصلاحش کردم:




function RefToCell(ARow, ACol: Integer): string;


var col : string;


begin


col := '';


if ACol > 26 then


begin


col := Chr(Ord('A')+ (ACol-1) div 26 - 1);


Acol := ACol mod 26;


end;


Result := col + Chr(Ord('A') + ACol - 1) + IntToStr(ARow);


end;

Suniiman
چهارشنبه 28 مهر 1400, 04:10 صبح
[QUOTE=Zahed2008;797844]سلام، چرا از كتابخانه ExcelXP استفاده نمي كنيد. كار باهاش خيلي راحته و امكانات زيادي داره.
[php]
uses ExcelXP ;

کتابخانه ExcelXP را از کجا دانلود کنم؟ گشتم نبود!

Suniiman
چهارشنبه 28 مهر 1400, 04:17 صبح
سلام. اگر موفق شدین با اکسل ارتباط برقرار کنید به منهم یاد بدید. این کتابخانه excelXP را پیدا نکردم.

hp1361
جمعه 30 مهر 1400, 04:17 صبح
سلام. اگر موفق شدین با اکسل ارتباط برقرار کنید به منهم یاد بدید. این کتابخانه excelXP را پیدا نکردم.

سلام

از منوی Component گزینه Install Packages رو انتخاب کنید. در پنجره ی باز شده از لیست گزینه Microsoft Office XP Sample Automation Server Wrapper Components رو تیک بزنید.

حالا میتونید excelXP رو در قسمت Uses یونیت اضافه کنید و از امکاناتش استفاده کنید