PDA

View Full Version : سوال: Import فایل اکسل به دیتابیس Access



amirkazem
جمعه 22 خرداد 1394, 13:21 عصر
باسلام خدمت دوستان واساتیدگرامی
مطالب فراوانی درخصوص ایمپورت کردن اطلاعات ازیک فایل اکسل به بانک اطلاعاتی دردلفی موجودهست.بنده هم چندین موردرامشاهده ومطالعه نمودم بعنوان مثال یک روش این بودک
1.ابتدادرفرم دلفی یک adoconnection ویک adotableویک datasurceقرارداده وسپس ازطریق connetion stringمربوط به adoconnection ومراحل بعدی که انتخاب فایل ونیز انتخاب provider 4 ودرتب آخرین(all) ودرنهایت تغییرvalue به عبارت یا مقدار Excel 8.0 که تمامی مراحل طبق راهنمایی دوستان بوده راانجام داده ام ولی برای انتخاب نام tableبرای adotable1 دچارخطامیشود وانگونه که دوستان فرموده اند که ممکن است درقسمت table name نام جدول به صورت $ tablename باشدمتأسفانه چنین چیزی موجودنمی باشد.واین فقط به خاطرعدم connection مناسب هستش.چون بعداز ادرس دهی برای adoconnection زمانی که دکمه test connection رامیزنم متأسفانه باخطامواجه میشوم.
دوستان اگرمحبتی بفرماییدوراهنمایی نمایید.کاربسیارضروری هستش.(دراصل اطلاعات بانک ما فقط همان محتویات فایل اکسل هست که میخواهیم انهارادریک جدول ترجیحاً بانک اکسس دردلفی ذخیره نموده وعملیات موردنظرازجمله ساختن کوئری وگزارشات و...راانجام دهیم.)
اگرروش مناسبتری برای استفاده ازمحتویات فایل اکسل (ایم=ورت فایل اکسل) دردلفی سراغ دارید، بفرمایید.
ازمحبت شماصمیمانه سپاسگزارم.

hp1361
جمعه 22 خرداد 1394, 17:03 عصر
سلام

پیشنهاد من استفاده از XLSReadWriteII5 هستش. با این کامپوننت به راحتی به اکسل وصل بشو و اطلاعات رو بخون و در سمت دیگه با FireDAC به هر بانکی که دوست داری() وصل بشو و اطلاعات رو ذخیره کن.

با کد زیر اطلاعات اکسل رو میخونیم:

XLSReadWriteII51.FileName := edt_XLSPath.Text;
XLSReadWriteII51.Read;
XLSReadWriteII51[0].CalcDimensions;
for R := XLSReadWriteII51[0].FirstRow to XLSReadWriteII51[0].LastRow do
begin
//خواندن اطلاعات هر ردیف
Param:= XLSReadWriteII51[0].AsString[2, R];
end;


کد ذخیره هم که خودت بلدی

موفق باشیم

amirkazem
شنبه 23 خرداد 1394, 23:36 عصر
دوست عزیزHp1361که همیشه به بنده لطف داشته ودارید.میشه محبت بفرماییدوروش کاربااین کامپوننت راهم بفرمایید.(راهنمایی بفرمایید)
باراهنمایی شمادوست گرامی کامپوننت موردنظرراازسایت ......... دانلودکردم (البته باهزینه بسیارناچیز5000ریال) ودرقسمت ToolPallet دلفیXE3 هم این کامپوننت رادارم.(نصب ازطریق Install C Package)
منتظرراهنمایی شمادوست عزیزهستم.
آرزوی توفیق

Mahmood_M
یک شنبه 24 خرداد 1394, 22:05 عصر
فایل مورد نظر با نسخه ی چند از Excel ساخته شده ؟
اگر اطلاعات Provider درست ست بشه و نام جدول رو در Query بین " [ ] " قرار بدید ، جدول شناخته میشه
من به همین صورت با فایل Excel کار می کنم ، نکته ی اصلی در ست کردن اطلاعات Provider هستش
البته با XLSReadWrite II5 کار نکردم !

amirkazem
دوشنبه 25 خرداد 1394, 02:00 صبح
فایل موردنظرباورژن 2007 هستش.ولی وقتی یک رونوشت ازهمان فایل بافرمت 203-97 ذخیره کردم وبادستوراتی که دربالاگفته شد، فایل موردنظردرفرم دلفی بامراحل فوق، کاملاً فراخوانی میشه ولی زمانی که برای اجرای برنامه اقدام کنیم(درمحیط طراحی بادکمه f9 ویاکلیل برروی علامت فلش سبز)درهنگام لودشدن فرم اجرایی بازخطامیده که انگارفایل موردنظرشماتوسط کاربردیگری درحال استفاده است.
اگردوستان باکامپوننت
XLSReadWrite II5 کارکرده اند، محبتی کنیدوراهنایی بفرمایید.

راستش یک فایل اکسل که بانسخه2007 اکسل هستش، داریم که قراراست براساس محتویات آن فایل، فیشهای داخلی بانک ملّی که معمولابه رنگ قرمزوسفیدواغلب دردونسخه نوشته می شوند، که حاوی اطلاعات:
1.بستانکارحساب
2.شرح
3.مبلغ به رقم
4.مبلغ به حروف
هست راازطریق فرم دلفی، پرینت بگیریم.

hp1361
دوشنبه 25 خرداد 1394, 07:10 صبح
سلام

اولا احتیاجی به پرداخت هزینه برای کامپوننت نبود. یه پیام خصوصی کوچیک میدادی برات ارسال میکرئم(بدلیل قوانین سایت نمیشه اینجا آپلود کرد.

ثانیاً در کدی که بالا قرار داده ام کاملا مشخصه که چیکار باید کرد!


XLSReadWriteII51.FileName := edt_XLSPath.Text;
XLSReadWriteII51.Read;
XLSReadWriteII51[0].CalcDimensions;
for R := XLSReadWriteII51[0].FirstRow to XLSReadWriteII51[0].LastRow do
begin
//خواندن اطلاعات هر ردیف
Param:= XLSReadWriteII51[0].AsString[2, R];
end;


در خط اول آدرس فایل رو به کامپوننت ارائه میدیم(توی کد بالا من آدرس رو از طریق یک Edit که توسط کاربر مشخص شده دریافت کردم. البته کاربر هم با استفاده از یک OpenDialog آدرس رو تعیین کرده) شما میتونی آدرس فایل رو اگر آدرس جاری برنامه تعیین کنی بصورت کد زیر

IncludeTrailingPathDelimiter(ExtractFilePath(Param Str(0))) + 'YourFileName.xls')


خط دوم که ثابته و دستور خواندن فایل اکسل رو به کامپوننت میده.

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

در خط بعد، با توجه به استخراج اطلاعات صفحه، با استفاده از یک حلقه روی ردیف های اون صفحه حرکت میکنیم و اطلاعات رو از ستون مورد نظر می خونیم

Param:= XLSReadWriteII51[0].AsString[2, R];

در کد بالا اطلاعات صفحه 0 و سطر R و ستون 2 در متغیر Param ریخته می شه

امیدوارم نحوه کار دستت اومده باشه

موفق باشیم

hadisalahi2
دوشنبه 25 خرداد 1394, 09:30 صبح
توضیحات دوستان کامل بود
اما من خودم برای این کار از کامپوننت های Ems Data Import استفاده میکنم که همه نسخه های اکسل رو پشتیبانی میکنه و کار کردن باهاش هم خیلی خیلی راحته