وقتی می خواهد conn.open انجام بشه خطا می دهد که جدول خارجی در قالب مورد انتظار نیست External table is not in the expected format
این کد تست شده است.
قبل از اجرای این کد، کد دیگه ای اجرا نشده که فایل اکسل رو باز کرده و تغییر داده باشه؟

گفته بودید که فایل اکسل برای چیست می خواهم اطلاعات تلفن هام را که در اکسل از قبل ثبت دارم از طریق شودیالوک انتخاب کند- و از طریق گریدویو هم چنانچه خواست ویرایش کند داخل سلول گرید انجام دهم
خب، الان قضیه روشنتر شد.
اگر این اکسپورت از اکسل به sql فقط یک بار انجام میشه،
میتونین اول اکسپورت ها رو انجام بدین (به هر روشی که راحتترین) و فایل های اکسل رو بگذارین کنار.
بعد از اون برای خوندن/ویرایش/آپدیت هم فقط با sql سروکار دارین.

ضمنا چگونه باید dispose کنم
این که کی و چجوری آبجکتها و ریسورس ها رو dispose کنیم مبحثی نیست که در این تاپیک بگنجه،
و شما باید با مفاهیم garbage collector و dispose و finilize و native resource و managed/unmanaged code آشنا باشین.

ولی خیلی ساده اگر بگیم:
در دات نت فریمورک آزاد کردن حافظه از آبجکتهای managed (منظور بومی خود دات نت یا native) ،
به طور خودکارتوسط garbage collector انجام میشه و نیازی نیست نگران اون باشیم.
ولی یک سری آبجکتها/منابع هستن که کدهای اونا unmanaged هست،
و اینها رو باید خودتون بلافاصله بعد از این که دیگه نیازی بهشون نیست dispose کنین (تا حافظه تخصیص داده شده به اونها آزاد بشه).
موارد مربوط به فایل و دیتابیس از این دسته ان.

پس کانکشن به دیتابیس رو خودمون باید dispose کنیم،
حالا این میتونه با اجرای متد dispose باشه (مثلا conn.dispose) یا بهتر اینکه در بلوک using بذاریم.

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

برای پاسخ دقیق به همه کدی که استفاده کردین نیاز هست،
یا پیوست کل پروژه.

با تشکر و سپاس فراوان از اینکه وقت حوصله می کنید
نظر لطف شماست،
امیدوارم تونسته باشم کمک کنم.