ASP.NET 利用 Microsoft.Office.Interop.Excel 版本导出Excel数据

/*可能回由于office版本问题造成异常*/

protected void ExportExcel(System.Data.DataTable dt,string fileName)

{

 if (dt == null || dt.Rows.Count == 0) return;

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

if (xlApp == null)

{

return;

}

System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;

Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);

Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];

Microsoft.Office.Interop.Excel.Range range;

long totalCount = dt.Rows.Count;

long rowRead = 0;

float percent = 0;

for (int i = 0; i < dt.Columns.Count; i++)

{

worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;

range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];

range.Interior.ColorIndex = 15; range.Font.Bold = true;

}

for (int r = 0; r < dt.Rows.Count; r++)

{

for (int i = 0; i < dt.Columns.Count; i++)

{

worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i].ToString();

}

rowRead++; percent = ((float)(100 * rowRead)) / totalCount;

}

workbook.SaveAs(fileName);

xlApp.Visible = false;

xlApp.Workbooks.Close();

xlApp.Quit();

//zxpGCCollect.ReleaseComObject(xls); /* 这里是我的一个资源回收的方法,具体请看下面 */

GC.Collect();

}