bita_naz
سه شنبه 10 شهریور 1394, 21:03 عصر
سلام دوستان
من از تابع زیر که در همین سایت پیدا کردم برای اکسپورت دیتا تیبل ام به فرمت اکسل استفاده میکنم.
public void ExportToExcel(DataGridView dg, DataTable dt)
{
try
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Microsoft.Office.Interop.Ex cel.XlSheetType.xlWorksheet);
Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWor kBook.Worksheets[1];
excelWorkSheet.DisplayRightToLeft = true;
int columnCount = dg.Columns.Count;
Microsoft.Office.Interop.Excel.Range[] rng = new Microsoft.Office.Interop.Excel.Range[columnCount];
// حلقه زیر برای افزودن ردیف اول به فایل اکسل که هدر است میباشد
for (int i = 0; i < columnCount; i++)
{
string cellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(i + 65))) + "1";
rng[i] = excelWorkSheet.get_Range(cellAddress, cellAddress);
rng[i].Value2 = dg.Columns[i].HeaderText;
}
int j = 2;
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < columnCount; i++)
{
string cellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(i + 65))) + j.ToString();
rng[i] = excelWorkSheet.get_Range(cellAddress, cellAddress);
rng[i].Value2 = dr[i].ToString();
}
j++;
}
excelApp.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + " خطا در ایجاد فایل اکسل");
}
}
تابع درست کار میکنه ولی وقتی تعداد رکوردها بیشتر از 2000 تا میشه پیغام خطای زیر رو میده
Exception from HRESULT: 0x800A03EC
لطفا راهنمایی کنید چکار کنم
اگر کامپوننت خوبی برای کار با فایلهای اکسل میشناسید لطفا معرفی کنید
با تشکر:لبخندساده:
من از تابع زیر که در همین سایت پیدا کردم برای اکسپورت دیتا تیبل ام به فرمت اکسل استفاده میکنم.
public void ExportToExcel(DataGridView dg, DataTable dt)
{
try
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Microsoft.Office.Interop.Ex cel.XlSheetType.xlWorksheet);
Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWor kBook.Worksheets[1];
excelWorkSheet.DisplayRightToLeft = true;
int columnCount = dg.Columns.Count;
Microsoft.Office.Interop.Excel.Range[] rng = new Microsoft.Office.Interop.Excel.Range[columnCount];
// حلقه زیر برای افزودن ردیف اول به فایل اکسل که هدر است میباشد
for (int i = 0; i < columnCount; i++)
{
string cellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(i + 65))) + "1";
rng[i] = excelWorkSheet.get_Range(cellAddress, cellAddress);
rng[i].Value2 = dg.Columns[i].HeaderText;
}
int j = 2;
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < columnCount; i++)
{
string cellAddress = Convert.ToString(Convert.ToChar(Convert.ToByte(i + 65))) + j.ToString();
rng[i] = excelWorkSheet.get_Range(cellAddress, cellAddress);
rng[i].Value2 = dr[i].ToString();
}
j++;
}
excelApp.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + " خطا در ایجاد فایل اکسل");
}
}
تابع درست کار میکنه ولی وقتی تعداد رکوردها بیشتر از 2000 تا میشه پیغام خطای زیر رو میده
Exception from HRESULT: 0x800A03EC
لطفا راهنمایی کنید چکار کنم
اگر کامپوننت خوبی برای کار با فایلهای اکسل میشناسید لطفا معرفی کنید
با تشکر:لبخندساده: