easyDelphi Q&A
0 تصويتات
152 مشاهدات

كيف يمكنني فتح ملف اكسل و عرض بياناته في dbgrid

سُئل في تصنيف SQL بواسطة (7,210 نقاط) | 152 مشاهدات
انا لا اتعامل مع ملفات الاكسل، اجبر زبائني على التعامل مع ال csv
ما هي المكونات التي تستعملها في عرضت الملف csv و هل تتعامل معه بشكل عادي كبقية الملفات
بالنسبة لل csv هو ملف نصي بسيط يمكن تحميل كل سطر منه إلى TStringList و جعل الفاصل بينها فاصلة منقوطة او TAB ، غالبا الاكسل يستعمل TAB للفصل بين القيم.
  sl.Delimiter := ';';
  sl.DelimitedText := s;
الجواب الاصلي هو ربط ملفات الاكسل عند طريق ال odbc مثلا و وربطها مع datasource ثم dbgrid
لكني من النوع الذي لايحب ال odbc او ال ado فلا استطيع الاجابة

1 إجابة واحدة

+1 تصويت

إليك هذا الحل المؤقت هنا:

var
  FrmMain: TFrmMain;

implementation
  uses
     Vcl.OleAuto, AdjustGrid, System.UITypes;
{$R *.dfm}

procedure TFrmMain.Connect_To_Excel;
var
  strConn:  widestring;
begin
  strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
           'Data Source=' + Edt_ExcelFilePath.Text + ';' +
           'Extended Properties=Excel 8.0;';

  AdoCon_Excel.Connected:=False;
  AdoCon_Excel.ConnectionString := strConn;
  try
    AdoCon_Excel.Open;
    AdoCon_Excel.GetTableNames(CBSheet.Items,True);
  except
    MessageDlg('Failed To Connect to Excel File !!',mtWarning,[mbok],0);
  end;
end;

procedure TFrmMain.Get_Excel_Data;
begin
  if not AdoCon_Excel.Connected then Connect_To_Excel;
  AdoQuery_Excel.Close;
  AdoQuery_Excel.SQL.Text:='SELECT * FROM ['+CBSheet.Text+']';
  try
    AdoQuery_Excel.Open;
  except
    MessageDlg('Failed To Connect to Excel File !!',mtWarning,[mbok],0);
  end;
end;

procedure TFrmMain.Btn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmMain.Btn_OpenFileClick(Sender: TObject);
begin
  DlgOpen_Excel.InitialDir := ExtractFileDir(ParamStr(0));

  if DlgOpen_Excel.Execute then
  begin
    Edt_ExcelFilePath.Text := DlgOpen_Excel.FileName;
    Connect_To_Excel;
    CBSheet.ItemIndex := 0;
    Btn_LoadExcel.Enabled := True;
  end else ShowMessage('please choose a Simple Excel File to load it here');
end;

procedure TFrmMain.Btn_LoadExcelClick(Sender: TObject);
begin
  Get_Excel_Data; AdjustColumnWidths(Dbgrd_Excel);
end;

لتحميل المثال جاهز من هنا.

تم الرد عليه بواسطة (17,520 نقاط)

اسئلة متعلقة

0 تصويتات
1 إجابة
سُئل ديسمبر 26، 2018 في تصنيف SQL بواسطة KHALED (7,210 نقاط) | 166 مشاهدات
+3 تصويتات
3 إجابة
سُئل سبتمبر 29، 2018 في تصنيف Delphi بواسطة ياسين بن داود (4,210 نقاط) | 125 مشاهدات
+3 تصويتات
1 إجابة
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

369 سؤال
598 إجابة
1,051 تعليق
231 مستخدم