PDA

View Full Version : سوال: فرستادن اطلاعات دیتاگرید به اکسل



vahidth
چهارشنبه 20 دی 1391, 17:00 عصر
سلام
دوستان چطوری میتونم اطلاعات دیتاگرید رو به اکسل بدون هیچ خطایی بفرستم؟

danialafshari
چهارشنبه 20 دی 1391, 19:08 عصر
سلام
دوستان چطوری میتونم اطلاعات دیتاگرید رو به اکسل بدون هیچ خطایی بفرستم؟

جستجو می کردید پیدا میشد
بفرمائید:

vahidth
چهارشنبه 20 دی 1391, 19:58 عصر
مرسی داداش

vahidth
چهارشنبه 20 دی 1391, 21:29 عصر
داداش این برنامه ای که فرستادی موقع اجرا ارور میده

programerinfonet
چهارشنبه 20 دی 1391, 21:43 عصر
داداش این برنامه ای که فرستادی موقع اجرا ارور میده
بله درسته خطا میده
اول که اجرا میشه میگه که فایل تو درایو سی ایجاد شد اما نمیشه
بعد از تو کد که اجرا می کنی دیگه اصلأ اجرا نمیشه

shahab2025
پنج شنبه 21 دی 1391, 08:42 صبح
سلام
من در برنامه ام از این کلاس استفاده میکنم

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using Microsoft.Office.Interop.Excel;

namespace Analysis._3_DAL
{
class DalConvertToExcel
{
public static void ExportToExcell(DataGridView dgv, DataSet ds)
{
try
{
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 excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = excelApp.Workbooks.Add(XlSheetType.xlWorksheet);
Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Worksheet)(excelBook.Worksheets[1]);
excelWorksheet.DisplayRightToLeft = true;
int clmncnt = dgv.Columns.Count;
Range[] rng = new Range[clmncnt];
for (int x = 0; x < clmncnt; x++)
{
string CellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(x + 65))) + "1";
rng[x] = excelWorksheet.get_Range(CellAddress, CellAddress);
rng[x].Value2 = dgv.Columns[x].HeaderText;
}
int j = 2;
foreach (DataRow r in ds.Tables[0].Rows)
{
for (int k = 0; k < clmncnt; k++)
{
string CellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(k + 65))) + j.ToString();
rng[k] = excelWorksheet.get_Range(CellAddress, CellAddress);
rng[k].Value2 = r[k].ToString();
}
j++;
}
excelApp.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}

vahidth
پنج شنبه 21 دی 1391, 09:13 صبح
میشه یکم درباره این کد و طرز استفاده از این کلاس در سی شارپ رو بگی؟

danialafshari
پنج شنبه 21 دی 1391, 09:45 صبح
داداش این برنامه ای که فرستادی موقع اجرا ارور میده

سلام
تست کردم و سالم بود
نسخه vs 2010 :

shahab2025
پنج شنبه 21 دی 1391, 09:58 صبح
میشه یکم درباره این کد و طرز استفاده از این کلاس در سی شارپ رو بگی؟
درباره کد که چی بگم ؟ کارش کاملا معلومه . فایل اکسل میسازه و اطلاعات را میریزه توش
اما طرز استفاده اش مثل هر کلاس دیگه است شما توسط یک دیتاست اطلاعات را به دیتا گرید منتقل کردی - حالا اینگونه در خاصیت کلیک دکمه مربوطه مینویسی

DalConvertToExcel.ExportToExcell(dgv, Ds);

که در آن dgv نام دیتاگرید است

vahidth
پنج شنبه 21 دی 1391, 10:36 صبح
داداش میشه یکم درباره این کدهایی که نوشتی توضیح بدی کارشون چیه
for (int x = 0; x < clmncnt; x++) {
string CellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(x + 65))) + "1";
rng[x] = excelWorksheet.get_Range(CellAddress, CellAddress);
rng[x].Value2 = dgv.Columns[x].HeaderText;
}
int j = 2;
foreach (DataRow r in ds.Tables[0].Rows)
{
for (int k = 0; k < clmncnt; k++)
{
string CellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(k + 65))) + j.ToString();
rng[k] = excelWorksheet.get_Range(CellAddress, CellAddress);
rng[k].Value2 = r[k].ToString();
}
j++;
}
excelApp.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

vahidth
پنج شنبه 21 دی 1391, 10:40 صبح
ممنون ازت داداش danialafshari اما بازم ارور میده

danialafshari
پنج شنبه 21 دی 1391, 10:51 صبح
ممنون ازت داداش danialafshari اما بازم ارور میده

برای من که مشکلی نداره