none
c#导出excel,如何设置工作表名。 RRS feed

  • 问题

  • 是这样的,web页面上的数据导入到excel中,excel文件名与工作表的名称一致,那怎么可以重新命名工作表的名称?

    public void ToExcel(System.Web.UI.Control ctl, string FileName)
    {

    HttpContext.Current.Response.Charset = "UTF-8"; // 或UTF-7 以防乱码
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName) + ".xls");
    ctl.Page.EnableViewState = false;
    System.IO.StringWriter tw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
    ctl.RenderControl(hw);
    HttpContext.Current.Response.Write(tw.ToString());
    HttpContext.Current.Response.End();
    ctl.Page.EnableViewState = false;

    }

    我希望文件的名字和工作表名不同,让工作表名不变,仍然为sheet1该如何设置

     

    2011年8月30日 3:23

全部回复

  • 直接把GridView Control汇出Excel,应该没办法设置sheet Name

    恐怕要用Excel的第三方组件(例如:NPOI)去重新捞数据再设置SheetName

     protected void btn_Excel_Click(object sender, EventArgs e)
     {
    
      NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
      System.IO.MemoryStream ms = new System.IO.MemoryStream();
    
      // 新增Sheet
      NPOI.HSSF.UserModel.HSSFSheet sheet = (NPOI.HSSF.UserModel.HSSFSheet)workbook.CreateSheet("Sheet1");
      NPOI.HSSF.UserModel.HSSFRow row = (NPOI.HSSF.UserModel.HSSFRow)sheet.CreateRow(0);
      row.CreateCell(0).SetCellValue("Hello World!!");//数据
       sheet.AutoSizeColumn(0);
    
       
    
      workbook.Write(ms);
      Response.AddHeader("Content-Disposition", string.Format("attachment; filename=Workbook.xls"));
      Response.BinaryWrite(ms.ToArray());
    
    
    
      workbook = null;
      ms.Close();
      ms.Dispose();
    
    
     }
    

    NPOI参考文件:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html


    Shadowと愉快なコード達

    2011年8月30日 5:08
  • 这么麻烦啊,
    2011年8月30日 5:40