读书人

c# WINFRM 导出EXCEL,该怎么处理

发布时间: 2013-01-12 16:25:03 作者: rapoo

c# WINFRM 导出EXCEL
想直接把datagridview里面的数据导出EXCEL,会的大神帮忙解答下,谢谢!
[解决办法]
要看导多少行,行数很多,我试过8K行以上通过一行一行的赋值会报错。好像是COM超时。行数过多,用rang的Value2

        public void dgvToExcel(string s_FileName, DataGridView dgv)
{
Excel.Application m_xlsApp = null;
Excel.Workbook m_Workbook = null;
Excel.Worksheet m_Worksheet = null;
object objOpt = System.Reflection.Missing.Value;
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
m_xlsApp = new Excel.Application();

try
{
m_Workbook = m_xlsApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
m_Worksheet = (Excel.Worksheet)m_Workbook.Worksheets.get_Item(1);

foreach (DataGridViewColumn dgvColumn in dgv.Columns)
{
m_Worksheet.Cells[1, dgvColumn.Index + 1] = dgvColumn.HeaderText;
}

int i = 1;
foreach (DataGridViewRow dgvRow in dgv.Rows)
{
i++;
foreach (DataGridViewColumn dgvColumn in dgv.Columns)
{
Excel.Range range = (Excel.Range)m_Worksheet.Cells[i, dgvColumn.Index + 1];
range.NumberFormatLocal = "@";
m_Worksheet.Cells[i, dgvColumn.Index + 1] = staticMethodClass.ToStringAndTrim(dgvRow.Cells[dgvColumn.Index].Value);
}


}

m_Workbook.SaveAs(s_FileName, objOpt, objOpt, objOpt, objOpt, objOpt, Excel.XlSaveAsAccessMode.xlNoChange, objOpt, objOpt, objOpt, objOpt, objOpt);
}
catch (Exception exc)
{
throw exc;
}
finally
{
m_Workbook.Close(false, objOpt, objOpt);
m_xlsApp.Quit();

ReleaseObj(m_Worksheet);
ReleaseObj(m_Workbook);
ReleaseObj(m_xlsApp);
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
}
}

读书人网 >C#

热点推荐