生成Excel报表时,在C:/下总是生成它的副本,很讨厌,不知为什么?(asp.net)

解决方案 »

  1.   

    我在asp在中调用
    set ExcelApp=server.CreateObject("Excel.Application")
    也会产生这种情况,而且程序日志中会产生提示安装被取消的日志。
      

  2.   

    你可以参考用
    NickLee.Common.ExcelLite工具类http://www.mikecat.net/blogview.asp?logID=1259&cateID=1
      

  3.   

    以下是该方法的代码:
    public  void  ToExcel(object [,] list)
    {
    Application app = new ApplicationClass();
    try
    {
    //此变量用来设置模板文件名
    string modelName= "Sell_RB";
    string saveSign = "销售日报表";
    //生成的报表文件名定义为模板文件名+生成年月日形式
    string saveName = saveSign + DateTime.Parse(this.myDate).ToString("yyMMdd");

    //报表模板
    object modelFileName = “/ReportMode/” + modelName;
    //用户Excel文件名
    object saveFileName = “D:/reprot/” + saveName;
    Workbook workbook = app.Workbooks.Open(modelFileName.ToString(),Missing.Value,
    Missing.Value,Missing.Value,Missing.Value,
    Missing.Value,Missing.Value,Missing.Value,
    Missing.Value,Missing.Value,Missing.Value,
    Missing.Value,Missing.Value,Missing.Value,Missing.Value); Excel.Worksheet  xlSheet = (Excel.Worksheet)workbook.Worksheets[1]; xlSheet.Cells[2,2] = this.deptName;
    xlSheet.Cells[2,8] = this.myDate;
    xlSheet.Cells[3,1]  = "货物名";
    for(int i = 0 ; i< this.myType.Count; i++) //添加数据类型
    {
    xlSheet.Cells[3,i+2] = this.myType[i].ToString();
    } for(int i=0;i<list.GetLength(0);i++)
    {
    for(int j=0;j<list.GetLength(1);j++)
    {
    xlSheet.Cells[i+4,j+1] = list[i,j].ToString();
    }
    }
    int row = list.GetLength(0) + 3;
    int col = list.GetLength(1);
    xlSheet.get_Range(xlSheet.Cells[3,1],xlSheet.Cells[row,col]).Borders.Weight   =   Excel.XlBorderWeight.xlThin ;    //如果文件存在则删除后在创建
    if(File.Exists(saveFileName.ToString()+".xls"))
    File.Delete(saveFileName.ToString()+".xls"); //另存为用户Excel文件  workbook.SaveAs(saveFileName,Missing.Value,Missing.Value,Missing.Value,
    Missing.Value,Missing.Value,XlSaveAsAccessMode.xlExclusive,
    Missing.Value,Missing.Value,Missing.Value,
    Missing.Value,Missing.Value); workbook.Close(false,Missing.Value,false);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
    workbook = null; Common.SaveToReportManage(saveName,"销售日报表",saveFileName.ToString()); }
    catch(Exception ecp)
    {
    throw new Exception(ecp.Message);
    }
    finally
    {
    //关闭Excel
    app.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
    app = null;
    GC.Collect();
    }
    }