صورت مسئله:
دسترسی و انجام عملیات، بر روی داده های ذخیره شده در بانک Excel:
<hr>

اصول کار:
استفاده از پرووایدر OLE DB Jet به منظور دسترسی، ایجاد و اصلاح داده های ذخیره شده در بانک Excel.

توضیحات مثال:
مثال زیر شامل دو روال می باشد:

Form.Load
ایجاد یک شی OleDbDataAdapter که از پرووایدر OLE DB به منظور دسترسی و ایجاد عملیات بر روی بانک Excel استفاده می کند.

Button.Click
از شی DataAdapter ایجاد شده در روال Form.Load، به منظور اعمال تغییرات انجام شده بر روی فایل Excel استفاده می کند.

مثال نمونه:

using System;
using System.Configuration;
using System.Data;

private OleDbDataAdapter da;
private DataTable dt;

// . . .

private void ExcelForm_Load&#40;object sender, System.EventArgs e&#41;
&#123;
da = new OleDbDataAdapter&#40;"SELECT * FROM &#91;Sheet1$&#93;",
ConfigurationSettings.AppSettings&#91;"Excel_Conne ctString"&#93;&#41;;

String insertSql = "INSERT INTO &#91;Sheet1$&#93; " +
"&#40;CategoryID, CategoryName, Description&#41; " +
"VALUES &#40;?, ?, ?&#41;";
da.InsertCommand =
new OleDbCommand&#40;insertSql, da.SelectCommand.Connection&#41;;
da.InsertCommand.Parameters.Add&#40;"@CategoryID", OleDbType.Integer, 0,
"CategoryID"&#41;;
da.InsertCommand.Parameters.Add&#40;"@CategoryName ", OleDbType.Char, 15,
"CategoryName"&#41;;
da.InsertCommand.Parameters.Add&#40;"@Description" , OleDbType.VarChar, 100,
"Description"&#41;;

String updateSql = "UPDATE &#91;Sheet1$&#93; " +
"SET CategoryName=?, Description=? " +
"WHERE CategoryID=?";
da.UpdateCommand =
new OleDbCommand&#40;updateSql, da.SelectCommand.Connection&#41;;
da.UpdateCommand.Parameters.Add&#40;"@CategoryName ", OleDbType.Char, 15,
"CategoryName"&#41;;
da.UpdateCommand.Parameters.Add&#40;"@Description" , OleDbType.VarChar, 100,
"Description"&#41;;
da.UpdateCommand.Parameters.Add&#40;"@CategoryID", OleDbType.Integer, 0,
"CategoryID"&#41;;

dt = new DataTable&#40; &#41;;
da.Fill&#40;dt&#41;;

dt.PrimaryKey = new DataColumn&#91;&#93; &#123;dt.Columns&#91;0&#93;&#125;;

dt.DefaultView.AllowDelete = false;
dt.DefaultView.AllowEdit = true;
dt.DefaultView.AllowNew = true;

dataGrid.DataSource = dt.DefaultView;
&#125;
private void updateButton_Click&#40;object sender, System.EventArgs e&#41;
&#123;
da.Update&#40;dt&#41;;
&#125;


توضیحات:
به منظور ایجاد ارتباط با یک بانک Excel، از پرووایدر Jet OLE DB استفاده می شود.
موتور پرووایدر Jet یا همان Jet Engine، قادر به برقراری ارتباط با فرمت های دیگر بانک های اطلاعاتی نیز می باشد.
این ارتباط، با تعیین نوع درایور بانک مربوطه – که به آن اصطلاحا ISAM یا متد دسترسی ترتیبی شاخص گذاری شده گفته می شود – در خاصیت Extended Properties کانکشن استرینگ، انجام می پذیرد.
برای استفاده از بانک های Excel نسخه 2000 به بالا، مقدار Extended Properties باید به Excel 8.0 تنظیم گردد.
مثال:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=myFile.xls;
Extended Properties="Excel 8.0;HDR=YES";

خاصیت HDR مشخص می کند که آیا در مقادیر بازیابی شونده، نام فیلدها در اولین ردیف رکوردها وجود دارد یا خیر.

توجه مهم: در Excel، مفهوم WorkSheet به جدول و مفهوم WorkBook به بانک اطلاعاتی یا همان فایل Excel اطلاق می شود.

بازیابی داده ها از WorkSheet:
روش های مختلفی به منظور بازیابی داده های ذخیره شده در فایل Excel وجود دارد.
دو روشی که بیشترین مورد استفاده را دارند عبارتند از:
1) تعیین نام Worksheet به همراه یک علامت $ در انتهای آن، به منظور انتخاب تمامی رکوردها:

SELECT * FROM &#91;MySheet$&#93;

2) تعیین محدوده ای از داده ها، همانند سینتکسی شبیه زیر:

SELECT * FROM &#91;MySheet$A1&#58;E5&#93;


دستور اس کیو ال فوق، داده های سلول های A1 تا E5 را انتخاب می کند.

ایجاد WorkSheet در بانک Excel:
با استفاده از فرمان اس کیو ال CREATE TABLE، قادر به ایجاد یک WorkSheet جدید در بانک Excel هستید.
مثال:

CREATE TABLE MySheet &#40;Field1 char&#40;10&#41;, Field2 float, Field3 date&#41;


اضافه کردن داده ها به WorkSheet:
با استفاده از دستور اس کیو ال INSERT (استاتیک یا پارامتری) می توان داده ها را به فایل Excel یا محدوده ای از سلول های WorkSheet، اضافه کرد:
مثال:

INSERT INTO &#91;MySheet$&#93; &#40;Field1, Field2, Field3&#41;
VALUES &#40;'myData', 1.234, '09/28/1979'&#41;;


اعمال تغییرات بر روی داده ها:
با استفاده از دستور اس کیو ال UPDATE (استاتیک یا پارامتری) می توان داده ها را در فایل Excel یا محدوده ای از سلول های WorkSheet، اصلاح کرد:
مثال:

UPDATE &#91;MySheet$&#93;
SET Field2 = '2.345',
Field3 = '10/18/1964'
WHERE
Field1 = 'myData'


حذف داده ها:
استفاده از دستور اس کیو ال DELETE به منظور حذف رکوردها، منجر به بروز یک خطای منطقی خواهد شد.
تنها راه حذف رکورد یا رکوردها، جایگزینی مقدار آنها با مقدار null یا خالی است.
<hr>
موفق باشید.