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

posted @ 2009-04-14 16:44  b0b0  阅读(503)  评论(0编辑  收藏  举报