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

نام تاپیک: خروجی اکسل دیتاگریدویو با سرعت بالا

  1. #1

    Red face خروجی اکسل دیتاگریدویو با سرعت بالا

    سلام
    من یه دیتابیس با 50 هزار رکورد دارم
    یه فرم دارم که یه سری قابلیت های سرچ براش در نظر گرفتم.
    خروجی این فیلترها معمولا 10 تا 30 هزار رکورد هست که تو دیتاگرید نمایش میده و من میخوام از دیتاگرید خروجی اکسل بگیرم
    من یه سری کد از نت سرچ کردم در واقع تمام کدها شبیه هم بود و یه زمان طولانی برای خروجی صرف میکرد

    من کدی میخوام که سرعت خروجی بالاتر بره
    لطفا راهنمایی کنید
    ممنونم
    سیستمی که نرم افزار روش نصبه سیستم بدی نیست 2 گیگ رم داره


    public void OutPutExcel(DataGridView dgv)
    {
    SaveFileDialog objSaveFileDialog = new SaveFileDialog();
    objSaveFileDialog.Filter = "Excel files(*.xls;*.xlsx)|*.xls;*.xlsx";
    objSaveFileDialog.ShowDialog();
    if (objSaveFileDialog.FileName != "")
    {
    System.Globalization.CultureInfo oldci = System.Threading.Thread.CurrentThread.CurrentCultu re;
    System.Threading.Thread.CurrentThread.CurrentCultu re = new System.Globalization.CultureInfo("en-us");
    Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
    Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
    Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
    app.Visible = true;
    worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workboo k.Sheets["Sheet1"];
    worksheet = (Microsoft.Office.Interop.Excel._Worksheet)workboo k.ActiveSheet;
    worksheet.Name = "bonyad";

    DataTable dtGridData = new DataTable();
    //dtGridData = (DataTable)_dgv_information_person.DataSource;
    DataRow dtRow;
    try
    {
    foreach (DataGridViewColumn col in dgv.Columns) // dgvData is the name of the gridView
    dtGridData.Columns.Add(col.DataPropertyName);
    foreach (DataGridViewRow gridRow in dgv.Rows)
    {
    if (gridRow.IsNewRow)
    continue;
    dtRow = dtGridData.NewRow();
    for (int i1 = 0; i1 < dgv.Columns.Count; i1++)
    dtRow[i1] = (gridRow.Cells[i1].Value == null ? null : gridRow.Cells[i1].Value);
    dtGridData.Rows.Add(dtRow);
    }
    }
    catch (Exception)
    { }
    for (int h = 1; h < dgv.Columns.Count + 1; h++)
    {
    worksheet.Cells[1, h] = dgv.Columns[h - 1].HeaderText;
    }
    //worksheet.Cells[1, 1] = "A".ToString(); // header text in excel based on your need
    //worksheet.Cells[1, 2] = "B".ToString(); // header text in excel based on your need
    //worksheet.Cells[1, 3] = "C".ToString(); // header text in excel based on your need

    for (int i = 0; i < dtGridData.Rows.Count; i++)
    {
    for (int j = 0; j < dtGridData.Columns.Count; j++)
    {
    worksheet.Cells[i + 2, j + 1] = dtGridData.Rows[i][j].ToString();
    }
    }
    //for (int i = 0; i < dgv.Rows.Count; i++)
    //{
    // DataGridViewRow row = dgv.Rows[i];
    // for (int j = 0; j < row.Cells.Count; j++)
    // {
    // worksheet.Cells[i + 1, j + 1] = row.Cells[j].Value.ToString();
    // }
    //}
    //
    worksheet.Rows.Font.Size = 9;
    worksheet.Rows.Font.Name = "tahoma";
    //
    workbook.SaveAs(objSaveFileDialog.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWork bookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode. xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    app.Quit();
    }
    }
    آخرین ویرایش به وسیله نیکناز : چهارشنبه 13 دی 1391 در 08:54 صبح

  2. #2
    کاربر دائمی آواتار ad.davachi
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    تهران
    پست
    161

    نقل قول: خروجی اکسل دیتاگریدویو با سرعت بالا

    سلام منم مشکل سرعت دارم از یک سری از اطلاعاتم از دیتابیس خروجی اکسل میگیرم که به شدت سرعتم پایین اومده شما راه حلی برای این مشکل پیدا کردید؟
    مثلا اگه بشه خروجی رو پارت پارت به کاربر هم بدیم خوب میشه ولی نمیدونم چطوری؟

  3. #3
    کاربر دائمی آواتار ad.davachi
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    تهران
    پست
    161

    Unhappy نقل قول: خروجی اکسل دیتاگریدویو با سرعت بالا

    من فکر میکنم این خط کدها سرعت رو تو حجم بالا خیلی پایین میاره ولی نمیدونم چطور میشه دیتاتیبل یا گرید رو توی table ریخت که برای اکسل قابل خوندن باشه
    لطفا کمک کنید

    for (int i = 0; i < dtGridData.Rows.Count; i++)                {
    for (int j = 0; j < dtGridData.Columns.Count; j++)
    {
    worksheet.Cells[i + 2, j + 1] = dtGridData.Rows[i][j].ToString();
    }
    }

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

  1. خروجی دیتاگرید به اکسل با سرعت بالا
    نوشته شده توسط نیکناز در بخش C#‎‎
    پاسخ: 0
    آخرین پست: یک شنبه 10 دی 1391, 11:08 صبح
  2. سرعت بالا در ایجاد یک SQl
    نوشته شده توسط spicirmkh در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: چهارشنبه 17 خرداد 1385, 16:49 عصر
  3. نمایش سرعت بالا آمدن صفحه در asp.net
    نوشته شده توسط Shabani.Mojtaba در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 26 دی 1383, 09:12 صبح
  4. تولید برنامه با سرعت بالا
    نوشته شده توسط بابک زواری در بخش VB.NET
    پاسخ: 0
    آخرین پست: چهارشنبه 16 اردیبهشت 1383, 00:05 صبح

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

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