نمایش نتایج 1 تا 12 از 12

نام تاپیک: دسترسی و انجام عملیات، بر روی داده های ذخیره شده در Excel

  1. #1

    دسترسی و انجام عملیات، بر روی داده های ذخیره شده در Excel

    صورت مسئله:
    دسترسی و انجام عملیات، بر روی داده های ذخیره شده در بانک 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>
    موفق باشید.

  2. #2
    کاربر دائمی آواتار Farhad-Csharp
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    119
    آقا خدا رفتگانتو بیامرزه ، شدید.

  3. #3
    بابا تو دیکه کی هستی؟ مسعود

  4. #4
    آقا جدا لطف فرمودید. البته من دیدم که راه حل مایکروسافت یک کم با این فرق داره. با این وجود ممنون

  5. #5
    خیلی ممنون

  6. #6

  7. #7
    من اگه بخوام داده های ستونهای A,B,C,D رو فقط بازیابی کنم از چه دستوری باید استفاده کنم ؟

  8. #8
    کاربر دائمی آواتار golihaghighi
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    شيراز
    سن
    47
    پست
    234
    واقعا ممنون

  9. #9
    کاربر تازه وارد آواتار Mohammadreza Heidari
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تبریز
    پست
    62
    مقاله جالبی بود خیلی ممنون

  10. #10
    کاربر دائمی
    تاریخ عضویت
    شهریور 1382
    محل زندگی
    هلند
    پست
    1,709
    سلام
    دست شما جناب راد درد نکنه ، یکی از زحمتکشان قسمت asp.net بی شک شما هستید.
    من موارد فوق را انجام میدم ( فایل اکسل را در دیتابیس اکسس ذخیره میکنم و اطلاعات را هم ویرایش میکنم) اما نکته مهم اینه که همیشه Sheetها نامشان Sheet نیست . من برنامه ای تحت وب نوشتم که فایل اکسل را از کاربر میگیره و در بانک ذخیره میکنه و بعد از یکسری تغییرات در فایل دوم ذخیره و برای مشتری میفرستد. اما مشکلی که دارم اینه که کاربران معمولا همیشه نام Sheet ها را تغییر میدهند. من دنبال روشی هستم که بتوانم فایل اکسل را که خوندم نام Sheet های آنرا استخراج کنم . آیا راهی هست ؟

  11. #11

    Unhappy نقل قول: دسترسی و انجام عملیات، بر روی داده های ذخیره شده در Excel

    سلام ببخشید چرا واسه من این ارور را می ده
    Object reference not set to an instance of an object.

  12. #12

    Unhappy نقل قول: دسترسی و انجام عملیات، بر روی داده های ذخیره شده در Excel

    چرا برای من این ارور را می ده
    Object reference not set to an instance of an object.

تاپیک های مشابه

  1. خواندن رکوردهای فایل excel
    نوشته شده توسط mahboob در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 10
    آخرین پست: یک شنبه 15 دی 1387, 15:37 عصر
  2. excel
    نوشته شده توسط shahzamanian در بخش C#‎‎
    پاسخ: 2
    آخرین پست: سه شنبه 23 بهمن 1386, 12:27 عصر
  3. باز کردن و ثبت اطلاعات در EXCEL
    نوشته شده توسط vb study در بخش VB.NET
    پاسخ: 1
    آخرین پست: دوشنبه 09 مرداد 1385, 10:43 صبح
  4. ویرایش فایل excel در دلفی
    نوشته شده توسط fata263 در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: سه شنبه 09 خرداد 1385, 09:58 صبح
  5. نمایش excel در دیتا گرید
    نوشته شده توسط gole_maryam در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 29 آبان 1384, 23:00 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •