NPOI向Excel单元格写入数据时出现“未将对象引用设置到对象的实例”

我本良人 2014-10-22 10:17:18
sheet1.GetRow(2).GetCell(2).SetCellValue("有");
运行到这中代码时,就是报“未将对象引用设置到对象的实例”
很焦人这个东西,自己瞎搞了半天,发现当要写入数据的单元格(2,2)里有数据时,就不会报这个错误,就可以成功写入新的数据;当该单元格里无数据时,往里面写入数据就会报以上错误。

有点晕了,看看有谁也遇到过这种问题,求指导,谢谢。
...全文
2261 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Levideng 2016-08-22
  • 打赏
  • 举报
回复
引用 10 楼 Aoteman_L 的回复:
刚刚碰到你这种情况, 已经刚解决了, 这个问题就是说你的表格没有第三行第三列这个单元格 原因可能是你复制模板表格时sheet名称没写对
 
IWorkbook workbook = null;
ISheet sheet1 = null;

using (FileStream file = new FileStream(Server.MapPath("~/Report/报表模板.xls"), FileMode.Open, FileAccess.Read))
            {
                workbook = new HSSFWorkbook(file);
                sheet1 = workbook.GetSheet("sheet1"); //这个sheet1 是你模板表格的名称
                file.Close();
            }
我获取到的模板名称没问题

                        IRow row = ws.GetRow(i);                 
                        int rowCount = row.LastCellNum; 
这里获取到的rowCount 值为44 但是我 ws.GetRow(4).GetCell(43).SetCellValue(“8”)时,依然报这个错。怎么回事呀?
Amanda92 2016-03-02
  • 打赏
  • 举报
回复
刚刚碰到你这种情况, 已经刚解决了, 这个问题就是说你的表格没有第三行第三列这个单元格 原因可能是你复制模板表格时sheet名称没写对
 
IWorkbook workbook = null;
ISheet sheet1 = null;

using (FileStream file = new FileStream(Server.MapPath("~/Report/报表模板.xls"), FileMode.Open, FileAccess.Read))
            {
                workbook = new HSSFWorkbook(file);
                sheet1 = workbook.GetSheet("sheet1"); //这个sheet1 是你模板表格的名称
                file.Close();
            }
qzyf1992 2014-10-22
  • 打赏
  • 举报
回复

      sheet.CreateRow(2);
这是创建row的npoi是开源的建议你研究下源码
於黾 2014-10-22
  • 打赏
  • 举报
回复
引用 7 楼 yangmingxing980 的回复:
[quote=引用 6 楼 sunny906 的回复:] 单元格(2,2)没有数据,sheet1.GetRow(2).GetCell(2)的值为null,再调用SetCellValue,当然就异常了。 LS的方法你可以试下
我是调用模版往里面写入数据,可是模块里需要写入数据的单元格都是空的啊,这个可怎么办[/quote] 这个不就跟你操作datatable一样吗 已有的行,你可以直接赋值 没有的行,你需要添加一行啊 用CreateCell创建一个cell不就得了
我本良人 2014-10-22
  • 打赏
  • 举报
回复
引用 6 楼 sunny906 的回复:
单元格(2,2)没有数据,sheet1.GetRow(2).GetCell(2)的值为null,再调用SetCellValue,当然就异常了。 LS的方法你可以试下
我是调用模版往里面写入数据,可是模块里需要写入数据的单元格都是空的啊,这个可怎么办
sunny906 2014-10-22
  • 打赏
  • 举报
回复
单元格(2,2)没有数据,sheet1.GetRow(2).GetCell(2)的值为null,再调用SetCellValue,当然就异常了。 LS的方法你可以试下
qzyf1992 2014-10-22
  • 打赏
  • 举报
回复

 ICell cell = row.CreateCell(2, CellType.Blank);
                    cell.SetCellValue("Hello,World");
这段代码应该是你想要的
  • 打赏
  • 举报
回复
空指针异常,就是没有cell,如果有值,说明存在cell,nul就是没有cell呀。
qzyf1992 2014-10-22
  • 打赏
  • 举报
回复
npoi加载sheet的时候会根据sheet中行末尾有值的项定义它行的长度。
qzyf1992 2014-10-22
  • 打赏
  • 举报
回复
你这当然报错了。。这个单元格是null啊。有数据就不是null啊。

   IRow row = sheet.GetRow(i);
                int rowCount = row.LastCellNum;
你看看这行数据的长度会发现这个单元格是null你想给他写数据是调用这个而不是直接赋值

 row.Cells.Add(cell);
内容概要:本文针对复杂威胁环境下多无人机的协同路径规划问题,提出一种基于多段杜宾斯(Dubins)路径的优化方法,旨在实现高动态、高风险场景中无人机群的安全、高效与协同飞行。研究充分考虑无人机的实际飞行约束,如最小转弯半径与连续曲率要求,采用杜宾斯曲线构建平滑且符合动力学特性的路径段,并结合优化算法对多机路径进行协同规划,有效规避静态威胁区域与动态障碍物,避免飞行器间发生碰撞。方案在Matlab平台上完成仿真验证,结果表明该方法能够在城市、军事等复杂环境中实现多无人机系统的路径最短化、能耗最低化、安全性最大化与实性兼顾的多目标优化,具有较强的工程应用潜力。; 适合人群:具备无人机控制、路径规划或智能优化算法基础的科研人员与工程技术人员,特别适用于自动化、航空航天、机器人及相关领域的研究生、高校教师及工业界研发人员。; 使用场景及目标:①应用于复杂城市、战场等高威胁环境下的多无人机协同任务,如侦察监视、应急救援、集群打击与编队巡航;②为解决多无人机系统中的动态避障、冲突消解、路径平滑与资源协同分配等关键技术问题提供理论依据与算法实现参考;③帮助研究人员深入理解Dubins路径在多智能体协同运动规划中的建模方式与优化机制,推动其在无人系统自主导航中的实际落地。; 阅读建议:建议读者结合提供的Matlab代码深入研读算法实现流程,重点分析威胁建模策略、多机冲突协调机制以及多目标代价函数的设计思路,可通过调整环境参数与优化权重在仿真中观察路径生成效果,从而加深对协同决策、运动学约束与全局优化之间耦合关系的理解。
内容概要:本文围绕“基于飞机配电优化负荷管理系统研究”展开,利用Matlab代码实现相关建模仿真与优化分析,旨在提升飞机配电系统的效率与可靠性。研究重点针对飞机电力系统中的动态负荷分配问题,构建了综合考虑电源容量限制、负载优先级划分、供电安全性、能量消耗最小化及系统冗余能力的多约束优化模型。通过引入先进智能优化算法对模型进行高效求解,实现了对机载关键与非关键设备的科学化、智能化供电管理。文中详细展示了算法迭代过程、收敛性分析及不同工况下的仿真结果,验证了该方法在降低整体能耗、均衡电力负载、增强系统稳定性以及应对突发用电需求等方面的优越性能,为现代民用与军用航空器电力系统的自主决策与健康管理提供了坚实的理论支撑与可行的技术路径。; 适合人群:具备电力系统、自动化或航空航天工程背景,熟练掌握Matlab编程语言,从事飞机电气系统设计、航空器能源管理、智能优化算法应用或相关领域研究的科研人员、工程师及研究生。; 使用场景及目标:①应用于新型飞机电气系统的设计与仿真验证,优化机载设备的供电策略与能量管理逻辑;②为复杂封闭电力系统(如舰船、空间站)中的负荷调度与应急电源管理提供可借鉴的解决方案,以提升系统整体能效、安全等级与运行韧性。; 阅读建议:建议结合提供的Matlab代码深入理解优化模型的数学建模过程、约束条件的程序化表达及智能算法的具体实现细节,重点关注目标函数的设计思路、权重系数的选取对优化结果的影响,并可尝试将模型拓展至多目标优化、实滚动优化或考虑设备故障预测的主动负荷管理等更复杂的应用场景。

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧