zoukankan      html  css  js  c++  java
  • asp.net+nopi生成Excel遇到设置单元格值null问题

    Npoi 生成excel报表功能很不错,功能也不用给大家介绍了。首先看遇到的问题吧!

            FileStream file = new FileStream(Server.MapPath("Templatetest.xls"), FileMode.Open, FileAccess.Read);
    
            HSSFWorkbook existWorkbook = new HSSFWorkbook(file);
    
            HSSFSheet sheet1 = (HSSFSheet)existWorkbook.GetSheet("Sheet1");
             sheet1.GetRow(1).GetCell(1).SetCellValue("新闻");
             sheet1.GetRow(2).GetCell(1).SetCellValue("娱乐");
             sheet1.GetRow(3).GetCell(1).SetCellValue("Angel工作室");
             //Force excel to recalculate all the formula while open
             sheet1.ForceFormulaRecalculation = true;
             //输出报表
             HssfworkbookToaDownloadFile(@"测试表名称.xls", hssfworkbooks);
    
    
    
    
        /// <summary>
        /// hssfworkbook输出为下载文件
        /// </summary>
        /// <param name="filename"></param>
        private void HssfworkbookToaDownloadFile(string filename, HSSFWorkbook hssfworkbook)
        {
            if (HttpContext.Current.Request.UserAgent.ToLower().IndexOf("msie") > -1)
            {
                filename = HttpContext.Current.Server.UrlPathEncode(filename);
            }
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
            HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", filename));
            HttpContext.Current.Response.Clear();
            MemoryStream file = new MemoryStream();
            hssfworkbook.Write(file);
            HttpContext.Current.Response.BinaryWrite(file.GetBuffer());
            HttpContext.Current.Response.End();
        }
    

     以上代码显然是看不出哪里有问题,但是就是报空的异常。

        sheet1.GetRow(1).GetCell(1).SetCellValue("新闻");
    这样第一行就错误报null异常。最后发现模板的问题,因为新建的模板没有什么值所以必须创建一下就搞定了。
    代码如下修改:
                if (sheet1.GetRow(1) == null)
                {
                    sheet1.CreateRow(1);
                }
                if (sheet1.GetRow(1).GetCell(1) == null)
                {
                    sheet1.GetRow(1).CreateCell(1);
                }
    

     希望能帮到大家,有什么技术问题大家可以讨论。

  • 相关阅读:
    正则表达式(转)
    Java实现的具有GUI的校园导航系统
    由“哥尼斯堡的‘七桥问题’”引出的并查集问题
    Is It A Red-Black Tree?(判断一棵树是否为红黑二叉树)
    Java IO
    Android ORMLite的使用
    Android SQLite数据库的数据升级与降级
    Android SQLite数据库 SQLiteOpenHelper的操作使用
    SimpleAdapter与baseAdapter的使用语法与区别
    Android五大布局之一绝对布局(AbsoluteLayout)
  • 原文地址:https://www.cnblogs.com/angelasp/p/3600161.html
Copyright © 2011-2022 走看看