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

نام تاپیک: فوت و فن های کار با اکسل در سی شارپ

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #6

    Question نقل قول: فوت وفن های کار با اکسل در سی شارپ

    نقل قول نوشته شده توسط sahar مشاهده تاپیک
    Excel :
    ________________________________________


    در این تاپیک خلاصه ای از مشکلات کار با اکسل و راه حل های آن را به همراه لینک های اصلی مورد استفاده می خوانید:

    سوال 1 :

    چگونه می توان یک فایل اکسل را خواند ؟


    1- با استفاده از ابزارDCOM Excel

    2- با استفاده ازOLEDB CONNECTION :
    * توجه این روش امن تر ودر اجرا بسیار سریع تر است.
    ** فایلهای با فرمت غیز جدولی Non .XLS رابا این روش نمی توان بازکرد. برای حل این مشکل به سوال 4 مراجعه کنید.


    Top Links:
    http://support.microsoft.com/default...oduct=NETFrame





    ________________________________________
    سوال 2 :
    علت بروز خطای زیر هنگام باز کردن ٍExcel.WorkBooks چیست ؟
    (Old Format Or Invalid Type Library)

    این خطا به علت تنظیمات غیر انگلیسی در Reginal Setting اتفاق می افتد و برای حل آن به کد زیر توجه کنید:

    کد:

    System.Globalization.CultureInfo oldCI =
    System.Threading.Thread.CurrentThread.CurrentCultu re;
    System.Threading.Thread.CurrentThread.CurrentCultu re =
    new System.Globalization.CultureInfo("en-US");

    m_objBooks.Open(dataSourcePath + excelFileName ,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_ob jOpt,m_objOpt, _objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objO pt,m_objOpt);

    System.Threading.Thread.CurrentThread.CurrentCultu re =
    oldCI;

    ________________________________________
    سوال 3 :
    چگونه می توان همه حافظه اشغال شده توسط Excel.Application و سایر کلاس های آن را آزاد کرد؟

    باید توجه کنیم که با بستن و نال کردن متغیر های ابزار اکسل حافظه اشغال شده آن آزاد نمی شود . بلکه استفاده از ابزار های زیر برای آزاد سازی حافظه ضروری ست :
    کد:

    m_objBook.Close(false, m_objOpt, m_objOpt);
    m_objBooks.Close();
    m_objExcel.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComO bject (m_objBook);
    System.Runtime.InteropServices.Marshal.ReleaseComO bject (m_objBooks);
    System.Runtime.InteropServices.Marshal.ReleaseComO bject (m_objExcel);
    m_objBook=null;
    m_objBooks=null;
    m_objExcel=null;
    GC.Collect(); // force final cleanup!
    _________________



    ________________________________________
    4- چگونه می توان سایر فرمت های فایل های اکسل مثل .csv را به فرمت XLS تبدیل کرد؟

    باباز کردن آن توسط ٍExcel.WorkBooks و ذخیره مجدد آن در دستورات زیر:
    کد:


    m_objBooks.Open(dataSourcePath + excelFileName ,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_ob jOpt,m_objOpt,
    m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_obj Opt,m_objOpt);


    m_objBook = m_objExcel.ActiveWorkbook;
    // Save the text file in the typical workbook format and quit Excel.
    m_objBook.SaveAs(dataSourcePath+"Temp.XLS", Excel.XlFileFormat.xlWorkbookNormal,
    m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
    m_objOpt, m_objOpt, m_objOpt);

    ________________________________________
    سوال 5 :
    هنگام نیو کردن Excel.Application در محیط وب با خطای زیر روبرو می شویم ؟ علت و راه حل آن چیست ؟
    (Access Denied)


    علت : امکان دسترسی به این DCOM توسط ASP.NET وجود ندارد.

    راه حل :باید در کامپیوتر سرور این اجازه دسترسی را صادر کنیم.
    مراحل صدور این مجوز این است :

    1- اجرای کامند روبرو در Run :dcomcnfg.exe
    2-با باز شدن برنامه سرویس Component Services به زیر شاخه زیر می رویم :

    Component Services => Computer => My Computer => DCOM Config
    3-برنامه Microsoft Excel Application را از لیست پیدا می کنیم و پراپرتی های آن را با کلیک راست می آوریم.

    4- اکنون زمان صدور مجوز برای ASPNET است.
    در تب Security :
    Access Permistion و Lunch Permistion را Customize می کنیم ویک گروه به نام ASPNET به لیست اضافه کرده و اجازه دسترسی آن را تیک می زنیم.

    Top Link:
    http://www.asp101.com/articles/jayra...et/default.asp

    در عنوان :Installing and running the sample:

    _________________



    ________________________________________
    سوال 6 :
    وقتی با استفاده از ابزار JetEngine OLEDB یک فایل اکسل را می خوانیم سطر اول Sheet خوانده نمی شود .
    علت و راه حل ان چیست ؟
    علت این است که سطر اول را به طور پیش فرض نام ستون های جدول فرض میکند .
    برای حل این مشکل در دات نت این فرمان را به ConnectionString اضافه می کنیم .(HDR=No):

    ترکیب کلی ConnectionString چنین است :
    کد:

    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source="+ dataSourcePath + "Temp.XLS"+";Extended Properties='Excel 8.0;HDR=No;'";

    Top Link :
    http://www.codeproject.com/csharp/Excel2XML.asp

    در عنوان :Connection to Excel using Jet Engine

    _________________



    ________________________________________
    سوال 7:
    چگونه می توان نام شیت های اکسل را خواند ؟

    با استفاده از تابع GetOleDbSchemaTable در OLE DB:

    به قطعه کد زیر توجه کنید :
    کد:

    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source="+ dataSourcePath + "Temp.XLS"+";Extended Properties='Excel 8.0;HDR=No;'";

    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);

    // Open connection with the database.
    objConn.Open();

    System.Data.DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables , null);

    if(dt == null)
    {
    return null ;
    }

    String[] excelSheets = new String[dt.Rows.Count];
    int i = 0;

    // Add the sheet name to the string array.
    foreach(DataRow row in dt.Rows)
    {
    excelSheets[i] = row["TABLE_NAME"].ToString();
    i++;
    }


    _________________

    ________________________________________
    یک شیوه عالی و بی درد سربرای خواندن فایلهای CSV

    به جای استفاده از انواع Connection ها وCom ها وDcomها وDllها
    می توانید راحت وسریع فایلهای Csv راباشی StreamReader در دات نت بخوانید:
    به همین راحتی !!
    کد:


    DataSet ds = CreateDataSet();
    String line;
    //Open the CSV file to Read data From it
    System.IO.StreamReader filestreamReader =
    new System.IO.StreamReader(dataSourcePath + FileName);
    while ((line = filestreamReader.ReadLine()) != null)
    {
    string[] strArray = ConvertCamaToArray(line );
    AddRow(ds , strArray) ;
    }
    filestreamReader.Close();
    return ds ;

    _________________
    _____________________________________
    _____________________________________
    اکسل رو توو گرید ایمپورت کردم.
    بعد وقتی میخوام سلولی که یک عددی تووشه رو مقدارش رو عوض کنم به رشته،
    ارور زیر میاد:
    http://up.iranblog.com/Files/d271e329197d42cf8e1e.JPG
    این رو واسم حل کنی دمت گرمه...


    +++++++++
    هیشکی نبود؟
    آخرین ویرایش به وسیله dr_jacky_2005 : شنبه 30 مرداد 1389 در 11:23 صبح

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

  1. کار با اکسل در سی شارپ
    نوشته شده توسط project80888 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: یک شنبه 20 مرداد 1392, 11:35 صبح
  2. کار با اکسل در سی شارپ
    نوشته شده توسط HDDSoft2001 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: سه شنبه 31 اردیبهشت 1392, 09:55 صبح
  3. کار با اکسل در سی شارپ
    نوشته شده توسط shojaiehamid در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 22 مرداد 1391, 11:46 صبح
  4. exe کردن فایل های اکسس و اکسل ؟
    نوشته شده توسط fardin_f10 در بخش Access
    پاسخ: 7
    آخرین پست: یک شنبه 06 اسفند 1385, 11:40 صبح
  5. پاسخ: 9
    آخرین پست: سه شنبه 30 آبان 1385, 15:10 عصر

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

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