怎么给datatable 表格动态增加行

2025-11-30 12:12:38

1、在VS2010中,构建Excel表导入数据的WinForm界面,如下图所示:

怎么给datatable 表格动态增加行

2、在VS2010的解决方案管理器点击“右键—>添加引用”,将NPOI组件添加到项目中,如下图所示:

怎么给datatable 表格动态增加行

3、给导入按钮的_Click方法,编写导入的数据解释代码,主要是通过NPOI引入数据,部分代码如下:

            int intFirstRow = 0;

            if (numStartRow.Value > 0)

            {

                intFirstRow = (int)(numStartRow.Value) - 1;

            }

            dt = null;

            dt = Import.ImportExcel(file, ccbRepType.SelectedIndex, intFirstRow); //导入数据,首行默认0

怎么给datatable 表格动态增加行

4、通过自定义的Import类,给datatable增加动态的列,主要代码如下:

              int cellCount = headerRow.LastCellNum;

               //一定要对单元格类型作判断 否则会报错 

               for (int i = headerRow.FirstCellNum; i < cellCount; i++)

                {

                    if (headerRow.GetCell(i) == null || headerRow.GetCell(i).ToString().Trim() == "") //StringCellValue.Trim() == ""

                    {

                        // 如果遇到第一个空列,则不再继续向后读取  LJS         

                        cellCount = i + 1;

                        break;

                    }

                    DataColumn column = new DataColumn(Convert.ToChar(((int)'A') + i).ToString());

                    table.Columns.Add(column);

                }

怎么给datatable 表格动态增加行

5、通过自定义的Import类,将行数据动态写入到datatable中去,部分代码如下:

               for (int i = HeaderRowIndex; i <= sheet.LastRowNum; i++)

                {

                    HSSFRow row = (HSSFRow)sheet.GetRow(i);

                    if (row == null || row.GetCell(0) == null || row.GetCell(0).ToString().Trim() == "")

                    {

                        // 如果遇到第一个空行,则不再继续向后读取                

                        break;

                    }

                    DataRow dataRow = table.NewRow();

                    for (int j = row.FirstCellNum; j < cellCount; j++)

                    {

                        HSSFCell cell = (HSSFCell)row.GetCell(j);

                        if (row.GetCell(j) != null)

                        {

                            switch ((HSSFCellType)cell.CellType)

                            {

                                case HSSFCellType.BLANK:

                                    dataRow[j] = cell.StringCellValue;

                                    break;

                                case HSSFCellType.BOOLEAN:

                                    dataRow[j] = cell.BooleanCellValue;

                                    break;

                                case HSSFCellType.NUMERIC:

                                    dataRow[j] = cell.NumericCellValue;

                                    break;

                                ……

                             }

                    }

                    table.Rows.Add(dataRow);

怎么给datatable 表格动态增加行

6、NPOI控件

笔者以上所用的npoi版本为1.2.5版本(部分自定义修改了),对于具体npoi相关资料可以从网上查找获得。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢