با سلام خدمت دوستان میخوام اطلاعات داخل DBGrid رو به اکسل بفرستم تو محیط Delphi XE میتونید کمکم کنید؟
Printable View
با سلام خدمت دوستان میخوام اطلاعات داخل DBGrid رو به اکسل بفرستم تو محیط Delphi XE میتونید کمکم کنید؟
داخل DBGRid اطلا عات نیست و فقط برای نمایش اطلاعات به کار میره دیتابیسی که بهش وصل شده چی هست؟
با تشکر از شما دوست عزیز بانکم SQL Server 2008 هسن که با TADOQuery به آن وصل شدم.
نحوه فرستادن اطلاعات از 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;
با تشکر از دوست عزیزم کاملا انجام شد فقط اگه میشه بهم بگین چجوری میتونم در اولین سطر اکسل عنوان اون ستونو بنویسم
با این قسمت کد
oSheet.Cells.Item[iRow,iCol]
عنوانو باید کجای این دستور بنویسم؟
oSheet.Cells.Item[1,1]:='متن'
یادت باشه حلقه فور از 2 شروع کنی که خونه اول مجدد پر نشه
با سلام خدمت دوست عزیز
راه حل اشاره شده در بخش بالا بسیار زیبا و کاربردی هست . من هم پیشنهاد می کنم در صورتیکه قصد داری امکانات Export را به برنامه های کاربردی خودت اضافه کنی از کامپوننت EMS_Advanced_Export استفاده کنی، کامپوننت فوق علاوه بر اینکه قادر است اطلاعات dbgrid را به بیش از 24 فرمت مختلف صادر کنه ، امکان تنظیم مربوط به هر قسمت را هم داره نظیر اینکه در فایل excel مقصد سطر ها و ستون ها چه فونت و رنگ و پهنا و ... داشته باشند . به همین صورت برای سایر فرمت ها نظیرdoc, xml, html,pdf, و..............
موفق باشی...
سلام بچه ها،
یه سوال اون کدی که گذاشتید رو چطور باید استفاده بکنیم؟
تو Button کلیک کردید و مسیر فایل اکسل رو گذاشتید این که هیچ؛ اما اون کدهای بالا رو کجا باید استفاده بکنیم؟
از اون بالا تا پایین رو میگم؟
uses COMObj,excelxp;
در قسمت بالاي يونيت برنامه كلمه uses نوشته شده و يك سري كد زيرش اين دو تا هم بهشون اضافه كن COMObj,excelxp
كدهاش تابع هم زير implementation كپي كن
بعد هر جا برنامهي مي توني تابع را صدا بزني
http://s1.picofile.com/file/75510953...excel.zip.html
سلام بچه ها، با تشکر از آقا سعید عزیز
من این برنامه رو نوشتم و براتون گذاشتم
میتونید استفاده بکنید.
امیدوارم که همگی بتونیم به هم کمک بکنیم
سلام
دقت داشته باشید که برای اینکار کامپوننتهایی هستند که این کار را برای شما به راحتی انجام میدهند. از جمله آنها می توان به کامپوننت TJvDBGridExcelExport موجود در مجموعه JVCL اشاره کرد.
موفق باشید...