NPOI row.Cells[i] 的坑

我有A行B列的EXCEL表格:

获取一行数据:

IRow row=sheet.GetRow(i);

正常是这样的

row.Cells.Count = B;

但由于会存在没有激活的单元格,导致 row.Cells.Count <=B。

坑是这样的:

当你想要对某行第2个(或其他)单元格进行赋值时,我是这样做了:

row.Cells[1].SetCellValue("######");

如果恰巧这行的所有单元格都是激活的,那这样做的结果是没错的。

但如果刚好第2个单元格(你想的)没有被激活过,这将导致第2个激活的单元格(具体哪个不确定)被覆盖。

正确做法:

if(row.GetCell(1)==null) //真正的第2个单元格

{

ICell cell = row.CreateCell(1);
cell.SetCellValue("#######");

}

else

{

row.Cells[1].SetCellValue("######");

}

这样就保证第2个单元格被赋值,而不覆盖其它的。

时间: 2024-12-28 23:34:03

NPOI row.Cells[i] 的坑的相关文章

数据字典生成工具之旅(4):NPOI操作EXECL

这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的几乎没有吧) 2:EXECL读写完毕后EXECL还有进程还留在后台  ,内存回收不了 基于以上的原因,就采用了开源组件NPOI进行操作了. 阅读目录 NPOI简介 简单示例 NPOI在本工具的使用及总结 工具源代码下载 学习使用 回到顶部 NPOI简介 1.Excel表格叫做工作表:WorkBook

调用存储过程取到数据通过NPOI存到Excel中

//调用 public ActionResult GenerateExcel() { DataTable headerTable = new DataTable(); headerTable.Columns.Add("Status_Id", Type.GetType("System.String")); headerTable.Columns.Add("Status_Name", Type.GetType("System.String&

NPOI之Excel——合并单元格、设置样式、输入公式

首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkbook(); //在工作簿中:建立空白工作表 ISheet sheet = workbook.CreateSheet(); //在工作表中:建立行,参数为行号,从0计 IRow row = sheet.CreateRow(0); //在行中:建立单元格,参数为列号,从0计 ICell cell = ro

NPOI生成excel并下载

NPIO文件下载地址:http://npoi.codeplex.com/ 将文件直接引用至项目中即可,,,,, 虽然网上资料很多,但有可能并找不到自己想要的功能,今天闲的没事,所以就稍微整理了一个简单的例子,希望自己在以后的项目中用得着,到时候就不用在网上查找了,直接把代码copy过来就可以啦~~~~主要是在mvc控制器里面敲的,直接贴代码了..... 1.逻辑代码 public EmptyResult ExportExcle() { HSSFCellStyle style; HSSFFont

&lt;转&gt;Npoi导入导出Excel操作&lt;载&gt;

1 //Datatable导出Excel 2 private static void GridToExcelByNPOI(DataTable dt, string strExcelFileName) 3 { 4 try 5 { 6 HSSFWorkbook workbook = new HSSFWorkbook(); 7 ISheet sheet = workbook.CreateSheet("Sheet1"); 8 9 ICellStyle HeadercellStyle = wor

NPOI帮助类

NPOI操作 public class NPOIExcel { private string _title; private string _sheetName; private string _filePath; /// <summary> /// 导出到Excel /// </summary> /// <param name="table"></param> /// <returns></returns> pu

NPOI上传EXCEL

代码: /// <summary> /// Excel文件导入 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnUpload_Click(object sender, EventArgs e) { string msg = string.Empty; t

利用NPOI开源的读写Excel、WORD等微软OLE2组件读写execl,控制样式或单元格

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; //add using System.Data; using System.IO; using NPOI; using NPOI.HSSF.UserModel; public partial class ExeclOper

使用NPOI读取Excel数据并写入SQLite

首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格里面写入一些数据,我这里只是Demo形式,可以根据自己的实际情况,稍作修改 然后开始建一个新的项目,我这里用的是WPF,你可以使用Core,Console,Winform都可以,我这里提供思路,仅供参考 然后引用一下图中的dll程序集,主要是SQLite和NPOI,你可以到Nuget去下载,Nuge