如题, 导出第一次没有问题, 再导就有问题了, 不知道是因为哪里没有释放. 部份代码如下.
protected void outExcel_Click(object sender, EventArgs e)
    {
        OutExcel outE = new OutExcel(); //实例化OutExcel类,打开Excel模版
        string sUserName = Common.Get_LoginName.Trim();//以用户名为导出的文件夹名
        FileHelper.DeleteDirectory("~\\Public\\OutExc\\" + sUserName + ""); //删除以前导出过的文件
        string sFileName = string.Empty;
        ArrayList lstFileName = new ArrayList();
        ArrayList list = new ArrayList();
        int count = 0;
        int i = 0;
        foreach (GridViewRow GridRow in this.gvList.Rows)
        {
            CheckBox ck = GridRow.FindControl("cbSelect") as CheckBox;
            if (ck.Checked)
            {
                i = i + 1;
                HiddenField FieldValueID = GridRow.FindControl("RsID") as HiddenField;
                string ComID = FieldValueID.Value;
                OutExcel objOutExcel = new OutExcel();
                sFileName = objOutExcel.ExportExcel(ComID, sUserName, "", i);
                count++;
            }
        }
        outE.file.Close();
        outE.file.Dispose(); //释放内存
        
        if (count == 1)
        {
            Response.Redirect(Page.ResolveUrl("~/") + "Public/OutExc/" + sUserName + "/" + Server.UrlEncode(sFileName.ToString()), false);
        }
        else
        {
            string sPathFrom = Server.MapPath("~\\Public\\OutExc\\" + sUserName + "").ToString().Trim();
            string sPathTo = Server.MapPath("~\\Public\\OutExc\\" + sUserName + "\\企业信息.zip").ToString().Trim();
            ZipFileFromDirectory(sPathFrom, sPathTo, 9);
            if (File.Exists(sPathTo)) //判断是否存在物理路径的压缩文件
            {
                Response.Redirect(Page.ResolveUrl("~/") + "Public/OutExc/" + sUserName + "/企业信息.zip", false);
            }        }
    }
OutExcel类:private int ZsCount = 0;
    public string strLayerName = "养殖企业@GDSC";
    public string strLayerName2 = "养殖基地@GDSC";
    private string zxdwd = ""; //中心点纬度
    private string zxdjd = ""; //中心点经度
    HSSFWorkbook hssfworkbook;
    public FileStream file;    public OutExcel()
    {
        string templatePath = HttpContext.Current.Server.MapPath("~\\hydgweb\\DataCollating\\ComInfo\\Template\\ExcelTemp\\ExcelTemplate.xls");
        
        using (file = new FileStream(templatePath, FileMode.Open, FileAccess.Read))
        {
            hssfworkbook = new HSSFWorkbook(file);
        }
    }    /// <summary>返回导出的文件名
    /// 
    /// </summary>
    /// <param name="TitleID"></param>
    /// <returns></returns>
    public string ExportExcel(string ComId, string sUserName, string diqu, int num)
    {
        string area = "";
        string myPath = "";        Wat_ComInfoEntity ut = BusinessRule.Wat_ComInfoDisp(ComId);
        string sFileName = "";
        if (ut.Com_Name.Trim() != "")
        {
            if (TakeOfStr(ut.Com_Name.Trim()) != "")
            {
                sFileName = TakeOfStr(ut.Com_Name.Trim());
            }
            else
            {
                sFileName = num.ToString();
            }
        }
        DataTable dt = BusinessFacadeComInfo.GetAreaName(ut.Com_AreaCode);
        if (dt != null && dt.Rows.Count > 0)
        {
            if (diqu == "")
            {
                //选择导出按钮
                //省
                if (dt.Rows[0]["City"].ToString() == "广东省") //因为有些数据的地区编码是广东省的,如果是广东省就不需要加广东省的目录
                {
                    myPath = dt.Rows[0]["City"].ToString() + "\\" + dt.Rows[0]["County"].ToString();
                    area = dt.Rows[0]["City"].ToString() + "/" + dt.Rows[0]["County"].ToString();
                }
                else
                {
                    myPath = "广东省\\" + dt.Rows[0]["City"].ToString() + "\\" + dt.Rows[0]["County"].ToString();
                    area = "广东省/" + dt.Rows[0]["City"].ToString() + "/" + dt.Rows[0]["County"].ToString();
                }
            }
                        //先创建目录,如果不存在
            string fullPath = Common.CreateDirectory(HttpContext.Current.Server.MapPath(Common.UpLoadDir), "OutExc\\" + sUserName + "\\" + myPath);
        }
        else
        {
            //没有记录,可能是因为企业的行政代码是镇的,而字典表里的镇级是没有行政代码的。所以要根据前面位判断归纳到市级
            string code = "";
            if (ut.Com_AreaCode != "")
            {
                code = ut.Com_AreaCode.Substring(0, 4);
            }
            DataTable dt2 = BusinessFacadeComInfo.GetAreaName2(code);
            if (dt2 != null && dt2.Rows.Count > 0)
            {
                if (diqu == "") //省
                {
                    //选择导出按钮
                    myPath = "广东省\\" + dt2.Rows[0]["City"].ToString();
                    area = "广东省/" + dt2.Rows[0]["City"].ToString();
                }
                else //市
                {
                    //导出全部按钮
                    myPath = dt2.Rows[0]["City"].ToString().Trim();
                    area = dt2.Rows[0]["City"].ToString().Trim();
                }
                //先创建目录,如果不存在
                string fullPath = Common.CreateDirectory(HttpContext.Current.Server.MapPath(Common.UpLoadDir), "OutExc\\" + sUserName + "\\" + myPath);
            }
        }
        string sPathNew = HttpContext.Current.Server.MapPath("~\\Public\\OutExc\\" + sUserName + "\\" + myPath + "\\" + sFileName + ".xls");
        if (!File.Exists(sPathNew))
        {
            ExportExcel(ComId, ut, sFileName, myPath, sUserName);
        }
        else
        {
            ExportExcel(ComId, ut, sFileName + num, myPath, sUserName); //如果文件已经存在了,就用企业名称加序号
        }
        return area + "/" + sFileName.Trim() + ".xls"; //返回带地区的文件名
    }    /// <summary>导出Excel文件
    /// 
    /// </summary>
    /// <param name="id"></param>
    private void ExportExcel(string ComId, Wat_ComInfoEntity ut, string sFileName, string myPath, string sUserName)
    {
        string ComName = ut.Com_Name.Trim();
              
        HSSFSheet sheet = hssfworkbook.GetSheetAt(2);
        //企业名称(姓名)
        string ComName_C = sheet.GetRow(1).GetCell(2).ToString(); //获取单元格的值
        string ComName_V = ComName_C.Replace("$Com_Name$", ComName); //替换标识符
        sheet.GetRow(1).GetCell(2).SetCellValue(ComName_V); //重新设置单元格的值
    
        int position = 0; //尾页的位置
        if (ZsCount > 1)
        {
            position = 4 + ZsCount;
        }
        else
        {
            position = 5;
        }
        hssfworkbook.CloneSheet(1); //克隆“尾页1”
        hssfworkbook.SetSheetName(position, "尾页");
        hssfworkbook.RemoveSheetAt(1); //删除“尾页1”        string sPathNew = "";//附件
        if (!System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("~\\Public\\OutExc\\" + sUserName + "\\" + myPath)))
        {
            Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~\\Public\\OutExc\\" + sUserName + "\\" + myPath));
        }
        sPathNew = HttpContext.Current.Server.MapPath("~\\Public\\OutExc\\" + sUserName + "\\" + myPath + "\\" + sFileName + ".xls");        //保存Excel
        sheet.ForceFormulaRecalculation = true;
        FileStream file2 = new FileStream(sPathNew, FileMode.Create);
        hssfworkbook.Write(file2);
    }