日期:2014-05-17  浏览次数:20508 次

NPOI的苦脑问题:单元格赋值老出错!!
using System.IO;
using NPOI.HSSF.UserModel;

protected void cmPrint_Click(object sender, EventArgs e)
    {
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        HSSFWorkbook workbook = new HSSFWorkbook(new FileStream(Server.MapPath("test.xls"), FileMode.Open));
        HSSFSheet sheet = (HSSFSheet)workbook.GetSheet("Sheet1");

        //这行可以通过
        sheet.GetRow(2).CreateCell(2).SetCellValue("这行可以通过");

        //下面这行出错:未将对象引用设置到对象的实例
        sheet.GetRow(3).GetCell(3).SetCellValue("这行老出错");
}

错误提示:未将对象引用设置到对象的实例
奇怪了,我是打开已经存在的EXCEL文件,它已经设定好了格式,我只要填数就好了,为什么还会出错,是哪里少了什么呢?
Excel

------解决方案--------------------
重新新建个文件试试
------解决方案--------------------
不要盯着代码考虑,这种出错的可能性也有可能出在test.xls身上。
------解决方案--------------------
sheet.GetRow(2).CreateCell(2).SetCellValue("这行可以通过");
sheet.GetRow(3).GetCell(2).SetCellValue("这行老出错");

这样试试?
------解决方案--------------------
没有创建就引用?
------解决方案--------------------
HSSFRow dataRow = sheet.CreateRow(3);
HSSFCell newCell = dataRow.CreateCell(3);
newCell.SetCellValue("应该没问题");

------解决方案--------------------
if sheet.GetRow(3)!=null&&sheet.GetRow(3).GetCell(3)!=null

哈哈,项目急可以将就用一下,以后有时间再研究