ورود

View Full Version : خروجی به اکسل



mf4arman24
پنج شنبه 19 اسفند 1389, 20:26 عصر
سلام به همه دوستان
خدا کنه کنه در جای مناسب پست زده باشم.
من یه برنامه کوچولو نوشتم که احساس کردم شاید کسانی نیاز داشته باشند.
چون خودم یه هفته با سعی و خطا و استفاده از برنامه های موجود در همین سایت تونستم راهش بندازم


فقط یه مشکل اگه کسی از دوستان براش ممکنه در سورس تغییراتی ایجاد کند که خروجی که میده (برای اکسل )فیلد ها را به فارسی مشخص کنه مثلا name را همان نام نشون بده .
البته توی برنامه ای که ازش استفاده کردم(قبلا دوستان گذاشتند) این اتفاق می افته ولی من سر در نیاوردم.

باز هم از کسانی که قبلا پست زده بودن و واقعا از همین پست ها تونستم مشکلم را بر طرف کنم ممنونم
:بوس:67331

mf4arman24
جمعه 20 اسفند 1389, 00:23 صبح
با سلام مجدد .
شرمند ه مزاحم دوستان می شم.
همه قسمت های برنامه کار میکنه و تنها مشکل در لیبل هایی است که موقع خروجی گرفتن به اکسل نمایش می ده(به انگلیسی هستش در حالی که کپشن ها را فارسی نوشتم).

خداییش کمکم کنید تا یکشنبه باید تحویل بدهم.
انشا الله اگه کمکم کنید از این روش تو بر نامه استفاده کنم. فقط مشکل در موقع خروجی هستش که گفتم.
کپشن ستون ها رو فارسی نشون بده.
:گریه:

mf4arman24
جمعه 20 اسفند 1389, 08:29 صبح
من یه تغییراتی دادم ولی بازم کار نکرد.



unit Unit1;

interface

uses
Windows, Messages, SysUtils,OleServer,XPMan, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB,ComObj, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids,ExcelXP, QExport,
QExportXLS;

type
TfrmExport = class(TForm)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
Edit2: TEdit;
Button3: TButton;
ADOTable1: TADOTable;
procedure ExportToExcel(ADO: TADOQuery);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private
function SetFieldDisplay(SourceADO: TADOTable;
DestinationADO: TADOQuery): Boolean;

{ Private declarations }
public
{ Public declarations }
end;

var
frmExport: TfrmExport;

implementation

{$R *.dfm}

procedure TfrmExport.ExportToExcel(ADO: TADOQuery);
var
Template: OleVariant;
ExcelApp: OleVariant;
S: String;
CRec, CField: Integer;
begin{1}




Template:= GetCurrentDir + '\Template.xlt';


ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := True;
ExcelApp.UserControl := True;

ExcelApp.Caption := 'Export';


ExcelApp.Workbooks.Add(Template);
ADO.First;

for CField := 0 to ADO.FieldCount - 1 do
begin{3}

S := ADO.Fields[CField].DisplayLabel;

ExcelApp.Range[char(CField+65) + '1',char(CField+65) + '1'].Select;

ExcelApp.ActiveCell.FormulaR1C1 := S;
end;{3}


for CRec := 1 to ADO.RecordCount do

begin{4}
for CField := 0 to ADO.FieldCount - 1 do

begin{5}
S := ADO.Fields[CField].AsString;

ExcelApp.Range[char(CField+65)+ IntToStr(CRec+1),char(CField+65)+ IntToStr(CRec+1)].Select;

ExcelApp.ActiveCell.FormulaR1C1 := S;
end;{5}
ADO.Next;
end;{4}

ExcelApp.Cells.Select;


ExcelApp.Cells.EntireColumn.AutoFit;
ExcelApp.Cells.EntireRow.AutoFit;

ExcelApp.Range['A1','A1'].Select;

ExcelApp.Visible := True;

end;{1}



procedure TfrmExport.Button1Click(Sender: TObject);
begin
ExportToExcel(ADOQuery1);
end;

procedure TfrmExport.Button2Click(Sender: TObject);
begin
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where name ='''+edit2.text+'''');
adoquery1.Active:=true;
SetFieldDisplay(ADOTable1, ADOQuery1);
end;

procedure TfrmExport.Button3Click(Sender: TObject);
begin

ADOQuery1.sql.Text:='select * from table1';
ADOQuery1.Active:=true;
end;

mf4arman24
جمعه 20 اسفند 1389, 23:56 عصر
سلام .
کسی نیست کمکم کنه . یه روز بیشتر وقت ندارم.
وای . کمکم کنید.
خواهشن
درکم کنید اگه می تونید کمکم کنید.:گریه::گریه::افسرده:
ممنون می شم.

shahincia00
شنبه 21 اسفند 1389, 14:28 عصر
روی adoquary دوباره کلیک کن یک پنجره باز می شود در آن راست کلیک کن و گزینه add field را بزن هر فیلدی را که می خواهی در اکسل نشان بده را انتخاب کن سپس یک فیلد انتخاب کن در پنجره خصوصیات گزینه disply label آن را به فارسی بنویس
و گزینه size برای اندازه خروجی فیلد در اکسل می باشد6739567395

حسین خانی
یک شنبه 19 خرداد 1392, 11:31 صبح
با سلام

من از این کد در دلفی xe2 استفاده میکنم





unit Unit1;
interface
uses
Windows, Messages, SysUtils,OleServer,XPMan, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB,ComObj, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids,ExcelXP, QExport,
QExportXLS;

type
TfrmExport = class(TForm)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
Edit2: TEdit;
Button3: TButton;
ADOTable1: TADOTable;
procedure ExportToExcel(ADO: TADOQuery);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private
function SetFieldDisplay(SourceADO: TADOTable;
DestinationADO: TADOQuery): Boolean;

{ Private declarations }
public
{ Public declarations }
end;

var
frmExport: TfrmExport;

implementation

{$R *.dfm}

procedure TfrmExport.ExportToExcel(ADO: TADOQuery);
var
Template: OleVariant;
ExcelApp: OleVariant;
S: String;
CRec, CField: Integer;
begin{1}




Template:= GetCurrentDir + '\Template.xlt';


ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible := True;
ExcelApp.UserControl := True;

ExcelApp.Caption := 'Export';


ExcelApp.Workbooks.Add(Template);
ADO.First;

for CField := 0 to ADO.FieldCount - 1 do
begin{3}

S := ADO.Fields[CField].DisplayLabel;

ExcelApp.Range[char(CField+65) + '1',char(CField+65) + '1'].Select;

ExcelApp.ActiveCell.FormulaR1C1 := S;
end;{3}


for CRec := 1 to ADO.RecordCount do

begin{4}
for CField := 0 to ADO.FieldCount - 1 do

begin{5}
S := ADO.Fields[CField].AsString;

ExcelApp.Range[char(CField+65)+ IntToStr(CRec+1),char(CField+65)+ IntToStr(CRec+1)].Select;

ExcelApp.ActiveCell.FormulaR1C1 := S;
end;{5}
ADO.Next;
end;{4}

ExcelApp.Cells.Select;


ExcelApp.Cells.EntireColumn.AutoFit;
ExcelApp.Cells.EntireRow.AutoFit;

ExcelApp.Range['A1','A1'].Select;

ExcelApp.Visible := True;

end;{1}



procedure TfrmExport.Button1Click(Sender: TObject);
begin
ExportToExcel(ADOQuery1);
end;

procedure TfrmExport.Button2Click(Sender: TObject);
begin
adoquery1.Active:=false;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where name ='''+edit2.text+'''');
adoquery1.Active:=true;
SetFieldDisplay(ADOTable1, ADOQuery1);
end;

procedure TfrmExport.Button3Click(Sender: TObject);
begin

ADOQuery1.sql.Text:='select * from table1';
ADOQuery1.Active:=true;
end;



اما موقع اجرا خطای زیر رو میده !!! لطفا راهنمایی کنید که مشکل از کجاست ؟

Not enough storage is available to complete this operation

aboualfazl
یک شنبه 02 تیر 1392, 00:36 صبح
سلام دوستان. لینک زیر رو در انجمن تخصصی ایران دلفی مطالعه بفرمایید .یه کامپوننت باحال داره که خیلی خوشتون میاد ...
http://irandelphi.ir/Catgory/2/Post/58

ضمنا هم فایل و هم فیلم کار باهاش موجوده ...

یوسف زالی
یک شنبه 02 تیر 1392, 09:08 صبح
یک کامپوننت وجود داره به نام ems_quickexport خیلی کار باهاش راحت و بی دردسره، امکانات خوبی هم داره.
پیشنهاد می کنم امتحانش کنید.

MASUMEKE
شنبه 08 تیر 1392, 17:21 عصر
سلام
من با استفاده از روشی که دوستان در بالا گفتن خروجی هامو به اکسل فرستادم اما وقتی تعداد ستون های جدولم زیاد میشه ارور میده
تیتر ستون هامم چون از جدول در sqlبر میداره لاتینه
چطور میتونم اینا رو درست کنم؟
ممنون میشم اگه راهنماییم کنید