نوشته شده توسط
mrali.jalali
این نمونه اطلاعات گرید رو می بره . فکر کنم ایشون مثل من نیازشون به ارسال خود گرید باشه یعنی اگر کاربر گروه بندی یا فیلتر کرد به همون حالت بره . من مشکلی با ورژن دات نت ندارم .
دوست عزیز این نمونه اطلاعات DataTable رو به اکسل انتقال میده.
یک DataTable میتونه اطلاعات خودشو به DataGridView انتقال بده یا اینکه اطلاعات DataGridView رو درون خودش قرار بده.
شما حتی اگه یک DataGridView رو روی فرم قرار بدید و به صورت دستی بهش ستون و ردیف اضافه کنید بدون بانک اطلاعاتی ، امکان تبدیل به DataTable هست.
پس میتونید اطلاعات گرید رو به دیتا تیبل و از دیتاتیبل به اکسل نتقال بدید.
public DataTable GetContentAsDataTable(bool IgnoreHideColumns = false)
{
try
{
if (dgv.ColumnCount == 0) return null;
DataTable dtSource = new DataTable();
foreach (DataGridViewColumn col in dgv.Columns)
{
if (IgnoreHideColumns & !col.Visible) continue;
if (col.Name == string.Empty) continue;
dtSource.Columns.Add(col.Name );
dtSource.Columns[col.Name].Caption = col.HeaderText;
}
if (dtSource.Columns.Count == 0) return null;
foreach (DataGridViewRow row in dgv.Rows)
{
DataRow drNewRow = dtSource.NewRow();
foreach (DataColumn col in dtSource.Columns)
{
drNewRow[col.ColumnName] = row.Cells[col.ColumnName].Value;
}
dtSource.Rows.Add(drNewRow);
}
return dtSource;
}
catch { return null; }
}