none
ASP.NET 通过NOPI 生成EXCEL 的问题 RRS feed

  • 问题

  • ASP.NET 通过NOPI 生成EXCEL 的问题

    以下的代码,下载的EXCEL 老是乱码, 请问问题出在哪里?

    2015年10月13日 4:05

答案

全部回复

  • 奇怪我的代码基本上一样,没有问题啊

            protected void Button2_Click(object sender, EventArgs e)
            {
                IWorkbook workbook = new HSSFWorkbook();
    
                ISheet sheet = workbook.CreateSheet(("MySheet"));
    
                sheet.CreateRow(0).CreateCell(0).SetCellValue("0");
                sheet.CreateRow(1).CreateCell(0).SetCellValue("1");
                sheet.CreateRow(2).CreateCell(0).SetCellValue("2");
                sheet.CreateRow(3).CreateCell(0).SetCellValue("3");
                sheet.CreateRow(4).CreateCell(0).SetCellValue("4");
                sheet.CreateRow(5).CreateCell(0).SetCellValue("5");
                
    
                using (MemoryStream ms = new MemoryStream())
                {
                    workbook.Write(ms);
    
                    byte[] content = ms.ToArray();
    
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", string.Format("attachement; filename=Workbook.xls"));
                    Response.BinaryWrite(content);
                    Response.End();
                }
            }

    结果是这样的


    我的工程是.net Framework 4.5.1, NPOI版本是2.2.0.0

    2015年10月13日 5:50
  • 奇怪我的代码基本上一样,没有问题啊

            protected void Button2_Click(object sender, EventArgs e)
            {
                IWorkbook workbook = new HSSFWorkbook();
    
                ISheet sheet = workbook.CreateSheet(("MySheet"));
    
                sheet.CreateRow(0).CreateCell(0).SetCellValue("0");
                sheet.CreateRow(1).CreateCell(0).SetCellValue("1");
                sheet.CreateRow(2).CreateCell(0).SetCellValue("2");
                sheet.CreateRow(3).CreateCell(0).SetCellValue("3");
                sheet.CreateRow(4).CreateCell(0).SetCellValue("4");
                sheet.CreateRow(5).CreateCell(0).SetCellValue("5");
                
    
                using (MemoryStream ms = new MemoryStream())
                {
                    workbook.Write(ms);
    
                    byte[] content = ms.ToArray();
    
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", string.Format("attachement; filename=Workbook.xls"));
                    Response.BinaryWrite(content);
                    Response.End();
                }
            }

    结果是这样的


    我的工程是.net Framework 4.5.1, NPOI版本是2.2.0.0

    请问能请教您一些NPOI 的问题吗? 我的QQ 是491537988
    2015年10月13日 13:03
  • 你好,我也第一次用NPOI的。
    2015年10月13日 23:45
  • 你看下面还有html代码,试试
    Response.End();

    http://feiyun0112.cnblogs.com/

    2015年10月14日 2:51
    版主
  • 你好,

    我建议你可以尝试使用Response.ContentEncoding属性对导出的内容进行编码

    Response.ContentEncoding = Encoding.UTF8;

    这里有些博客你可以参考他们:

    http://blog.csdn.net/accountwcx/article/details/8144970

    http://www.cnblogs.com/spring_wang/p/3145689.html

    2015年10月14日 6:31
    版主