asp.net 调用 excel 组件
Asp.net 如何调用 Excel ?
1. 引用 Microsoft.Office.Interop.Excel.dll,自动包装成Interop.Microsoft.Office.Interop.Excel.dll
2. 代码:
/// <summary>
/// 生成 excel 报表
/// </summary>
private void CreateExcelReport()
{
string xlTemplateFullPath = Server.MapPath("~/Function/Business/ExcelTemplate/OTOCFPY.xls");
string xlSavePath = Server.MapPath("~/Function/Business/ExcelReport");
_Application xlApp = null;
_Workbook xlWorkbook = null;
_Worksheet xlWorksheet = null;
System.Reflection.Missing oMissing = System.Reflection.Missing.Value;
try
{
xlApp = new ApplicationClass();
xlWorkbook = xlApp.Workbooks.Open(xlTemplateFullPath ,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing,
oMissing);
xlWorksheet = (Worksheet)xlWorkbook.Worksheets[1];
xlSavePath = Path.Combine(xlSavePath, DateTime.Now.Ticks.ToString());
//写入excel数据
WriteData(xlWorksheet );
xlWorkbook.SaveAs(xlSavePath, oMissing, oMissing, oMissing, oMissing,
oMissing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, oMissing, oMissing, oMissing,
oMissing, oMissing);
xlApp.Visible = true;
xlApp.Quit();
//发送excel 文件到客户端
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=todayDownList.xls");
System.IO.FileInfo fileInfo = new FileInfo(xlSavePath+".xls" );
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.WriteFile(fileInfo.FullName);
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
GC.Collect();
}
}
注意点
用完excel后一定要释放excel