PDA

View Full Version : فرستادن اطلاعات داخل DBGrid به اکسل در دلفی XE



mmohsenifar
یک شنبه 20 شهریور 1390, 14:29 عصر
با سلام خدمت دوستان میخوام اطلاعات داخل DBGrid رو به اکسل بفرستم تو محیط Delphi XE میتونید کمکم کنید؟

pop123
یک شنبه 20 شهریور 1390, 15:24 عصر
داخل DBGRid اطلا عات نیست و فقط برای نمایش اطلاعات به کار میره دیتابیسی که بهش وصل شده چی هست؟

mmohsenifar
یک شنبه 20 شهریور 1390, 15:40 عصر
با تشکر از شما دوست عزیز بانکم SQL Server 2008 هسن که با TADOQuery به آن وصل شدم.

سعید صابری
یک شنبه 20 شهریور 1390, 15:43 عصر
نحوه فرستادن اطلاعات از dbgrid به excel

فرقی نمی کنه بانکت چیه. یا اینکه adotable یا adoquery و یا dbgrid باشه می تونی اطلاعاتشون بفرستی به اکسل




uses COMObj,excelxp;
Function ExportToExcel(oDataSet : TDataSet; sFile : String): Boolean;
var
iCol,iRow : Integer;

oExcel : TExcelApplication;
oWorkbook : TExcelWorkbook;
oSheet : TExcelWorksheet;

begin
iCol := 0;
iRow := 0;
result := True;

oExcel := TExcelApplication.Create(Application);
oWorkbook := TExcelWorkbook.Create(Application);
oSheet := TExcelWorksheet.Create(Application);

try
oExcel.Visible[0] := False;
oExcel.Connect;
except
result := False;
MessageDlg('Excel may not be installed', mtError, [mbOk], 0);
exit;
end;

oExcel.Visible[0] := True;
oExcel.Caption := 'Export to excel';
oExcel.Workbooks.Add(Null,0);

oWorkbook.ConnectTo(oExcel.Workbooks[1]);
oSheet.ConnectTo(oWorkbook.Worksheets[1] as _Worksheet);

// iRow := 1;

for iCol:=1 to oDataSet.FieldCount do begin
// oSheet.Cells.Item[iRow,iCol] := oDataSet.FieldDefs.Items[iCol].Name;
// oSheet.Cells.Item[iRow,iCol] := oDataSet.Fields[iCol-1].FieldName;
end;

// iRow := 2;

oDataSet.Open;
while NOT oDataSet.Eof do begin
Inc(iRow);

for iCol:=1 to oDataSet.FieldCount do begin
oSheet.Cells.Item[iRow,iCol] := oDataSet.Fields[iCol-1].AsString;
end;

oDataSet.Next;
end;

//Change the wprksheet name.
oSheet.Name := 'List of Accounts';

//Change the font properties of all columns.
oSheet.Columns.Font.Color := clPurple;
oSheet.Columns.Font.FontStyle := fsBold;
oSheet.Columns.Font.Size := 10;

//Change the font properties of a row.
oSheet.Range['A1','A1'].EntireRow.Font.Color := clNavy;
oSheet.Range['A1','A1'].EntireRow.Font.Size := 16;
oSheet.Range['A1','A1'].EntireRow.Font.FontStyle := fsBold;
oSheet.Range['A1','A1'].EntireRow.Font.Name := 'Arabic Transparent';

//Change the font properties of a row.
oSheet.Range['A2','A2'].EntireRow.Font.Color := clBlue;
oSheet.Range['A2','A2'].EntireRow.Font.Size := 12;
oSheet.Range['A2','A2'].EntireRow.Font.FontStyle := fsBold;
oSheet.Range['A2','A2'].EntireRow.Font.Name := 'Arabic Transparent';
oSheet.Range['A2','H2'].HorizontalAlignment := xlHAlignCenter;
{
//Change the font properties of a column.
oSheet.Range['A1','C1'].EntireColumn.Font.Color := clBlue;

//Change Cells color of a row.
oSheet.Range['A1', 'A1'].EntireRow.Interior.Color := clNavy;

//Change Cells color of a column.
oSheet.Range['C1', 'C1'].EntireColumn.Interior.Color := clYellow;

//Align a column.
oSheet.Range['A1','A1'].HorizontalAlignment := xlHAlignLeft;

//Set a column with manually.
// oSheet.Columns.Range['A1','A1'].ColumnWidth := 16;
}
//Auto fit all columns.
oSheet.Columns.AutoFit;


DeleteFile(sFile);

Sleep(2000);

oSheet.SaveAs(sFile);
oSheet.Disconnect;
oSheet.Free;

oWorkbook.Disconnect;
oWorkbook.Free;

oExcel.Quit;
oExcel.Disconnect;
oExcel.Free;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
ExportToExcel(DBGrid1.DataSource.DataSet,'d:\MyDat a.XLS');
end;

mmohsenifar
یک شنبه 20 شهریور 1390, 21:08 عصر
با تشکر از دوست عزیزم کاملا انجام شد فقط اگه میشه بهم بگین چجوری میتونم در اولین سطر اکسل عنوان اون ستونو بنویسم

سعید صابری
یک شنبه 20 شهریور 1390, 22:38 عصر
با این قسمت کد



oSheet.Cells.Item[iRow,iCol]

mmohsenifar
دوشنبه 21 شهریور 1390, 08:54 صبح
عنوانو باید کجای این دستور بنویسم؟

سعید صابری
دوشنبه 21 شهریور 1390, 15:17 عصر
oSheet.Cells.Item[1,1]:='متن'


یادت باشه حلقه فور از 2 شروع کنی که خونه اول مجدد پر نشه

yhakzar
سه شنبه 22 شهریور 1390, 15:22 عصر
با سلام خدمت دوست عزیز
راه حل اشاره شده در بخش بالا بسیار زیبا و کاربردی هست . من هم پیشنهاد می کنم در صورتیکه قصد داری امکانات Export را به برنامه های کاربردی خودت اضافه کنی از کامپوننت EMS_Advanced_Export استفاده کنی، کامپوننت فوق علاوه بر اینکه قادر است اطلاعات dbgrid را به بیش از 24 فرمت مختلف صادر کنه ، امکان تنظیم مربوط به هر قسمت را هم داره نظیر اینکه در فایل excel مقصد سطر ها و ستون ها چه فونت و رنگ و پهنا و ... داشته باشند . به همین صورت برای سایر فرمت ها نظیرdoc, xml, html,pdf, و..............

موفق باشی...

daei_honey
جمعه 19 آبان 1391, 10:44 صبح
سلام بچه ها،
یه سوال اون کدی که گذاشتید رو چطور باید استفاده بکنیم؟
تو Button کلیک کردید و مسیر فایل اکسل رو گذاشتید این که هیچ؛ اما اون کدهای بالا رو کجا باید استفاده بکنیم؟
از اون بالا تا پایین رو میگم؟

سعید صابری
جمعه 19 آبان 1391, 11:22 صبح
uses COMObj,excelxp;


در قسمت بالاي يونيت برنامه كلمه uses نوشته شده و يك سري كد زيرش اين دو تا هم بهشون اضافه كن COMObj,excelxp
كدهاش تابع هم زير implementation كپي كن

بعد هر جا برنامهي مي توني تابع را صدا بزني

daei_honey
جمعه 19 آبان 1391, 14:48 عصر
http://s1.picofile.com/file/7551095371/Dbgrid_to_excel.zip.html

سلام بچه ها، با تشکر از آقا سعید عزیز
من این برنامه رو نوشتم و براتون گذاشتم
میتونید استفاده بکنید.
امیدوارم که همگی بتونیم به هم کمک بکنیم

BORHAN TEC
جمعه 19 آبان 1391, 15:36 عصر
سلام
دقت داشته باشید که برای اینکار کامپوننتهایی هستند که این کار را برای شما به راحتی انجام میدهند. از جمله آنها می توان به کامپوننت TJvDBGridExcelExport موجود در مجموعه JVCL اشاره کرد.
موفق باشید...

kamran749
یک شنبه 06 مرداد 1392, 01:35 صبح
سلام
دقت داشته باشید که برای اینکار کامپوننتهایی هستند که این کار را برای شما به راحتی انجام میدهند. از جمله آنها می توان به کامپوننت TJvDBGridExcelExport موجود در مجموعه JVCL اشاره کرد.
موفق باشید...

سلام و تشکر
لطفا طرز کار اين کامپوننت را روي دلفي XE3 توضيح دهيد.و بانک اکسس
با آرزوي سلامتي براي شما

kamran749
یک شنبه 06 مرداد 1392, 01:38 صبح
با سلام خدمت دوست عزیز
راه حل اشاره شده در بخش بالا بسیار زیبا و کاربردی هست . من هم پیشنهاد می کنم در صورتیکه قصد داری امکانات Export را به برنامه های کاربردی خودت اضافه کنی از کامپوننت EMS_Advanced_Export استفاده کنی، کامپوننت فوق علاوه بر اینکه قادر است اطلاعات dbgrid را به بیش از 24 فرمت مختلف صادر کنه ، امکان تنظیم مربوط به هر قسمت را هم داره نظیر اینکه در فایل excel مقصد سطر ها و ستون ها چه فونت و رنگ و پهنا و ... داشته باشند . به همین صورت برای سایر فرمت ها نظیرdoc, xml, html,pdf, و..............

موفق باشی...

سلام و تشکر
لطفا طرز کار اين کامپوننت را روي دلفي XE3 توضيح دهيد.من هر کاري کردم موفق به ارسال دبي گريد به اکسل نشدم.بانکم اکسس است.
با آرزوي سلامتي براي شما