NPOI使用ShiftRows向excel插入行,并复制原有样式

使用excel模板导出数据时,模板可填充的数据行有限,可通过ShiftRows插入行,如图,在第七行后插入新行,要求新行包含原有样式

插入后

首先添加npoi类库引用

        /// <summary>
        /// NPOI使用ShiftRows向excel插入行,并复制原有样式
        /// </summary>
        /// <param name="file">模板文件,包含物理路径</param>
        /// <param name="dir">导出路径</param>
        public void ShiftRows(string file,string dir)
        {
            //创建Excel文件的对象
            FileStream fs = new FileStream(file, FileMode.Open);
            HSSFWorkbook workbook = new HSSFWorkbook(fs);

            ISheet sheet = (HSSFSheet)workbook.GetSheetAt(0);
            int startRow = 7;//开始插入行索引

            //excel sheet模板默认可填充4行数据
            //当导出的数据超出4行时,使用ShiftRows插入行
            if (list.Count > 4)
            {
                    //插入行
                    sheet.ShiftRows(startRow, sheet.LastRowNum, list.Count - 4, true, false);
                    var rowSource = sheet.GetRow(3);
                    var rowStyle = rowSource.RowStyle;//获取当前行样式
                    for (int i = startRow; i < startRow+list.Count-4; i++)
                    {
                        var rowInsert = sheet.CreateRow(i);
                        if (rowStyle != null)
                            rowInsert.RowStyle = rowStyle;
                        rowInsert.Height = rowSource.Height;

                        for (int col = 0; col < rowSource.LastCellNum; col++)
                        {
                        var cellsource = rowSource.GetCell(col);
                        var cellInsert = rowInsert.CreateCell(col);
                        var cellStyle = cellsource.CellStyle;
               //设置单元格样式    
                        if (cellStyle != null)
                            cellInsert.CellStyle = cellsource.CellStyle;

                        }

                    }              

            }

            //绑定数据
            for (int j = 0; j < list.Count; j++)
            {
                //单元格赋值等其他代码
                IRow r = sheet.GetRow(j + 3);
                r.Cells[0].SetCellValue(j + 1);
            }
           //后续操作。。。。。。。。。。

        }
时间: 2024-11-11 09:34:53

NPOI使用ShiftRows向excel插入行,并复制原有样式的相关文章

20150916_018 插入行()

Sub 插入行()    Dim myRow As Long '定义myRow变量,用于存储原表中数据的行数: Dim i As Long  '定义i变量,作为循环变量:        myRow = Range("A" & Rows.Count).End(xlUp).Row ' 用rows.count得到excel表总行数,然后利用Range("A" & Rows.Count).End(xlUp)得到最为一行不为空的单元格,然后利用Range(&q

Excel催化剂开源第40波-Excel插入图片做到极致的效果

不知道是开发人员的自我要求不高还是用户的使用宽容度足够大,在众多Excel插入图片的版本中,都没有考虑到许多的可大幅度提升用户体验的细节处理. Excel催化剂虽然开发水平有限,但也在有限的能力下,尽最大的努力做到自己可以过关的出街成品. 此篇着重谈下思路性的问题,代码因为太久远之前写的,现在看回也是一坨坨的,真需要时可能重新写一轮更方便. Excel插入图片的细节追求 可能在之前的文章中,也偶尔做了一些分享,自己也不太记得分享过哪些了,这里再重新梳理下,有重复提及的部分就权当复习好了. 一.插

WeihanLi.Npoi 根据模板导出Excel

WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据模板导出,在 1.8.0 版本中引入了根据模板导出的功能 使用示例 示例模板 模板规划的可以有三种数据: Global:一个是导出的时候可以指定一些参数,作为 Global 参数,默认参数格式使用: $(Global:PropName) 的格式 Header:配置的对应属性的显示名称,默认是属性名称

用NPOI从DataBase到Excel &#39;2

NPOI的C# Helper代码2 1 public static MemoryStream ExportXls(DataTable dt) 2 { 3 HSSFWorkbook wk = new HSSFWorkbook(); 4 ISheet sheet = null; 5 6 string sheetName = "Sheet1"; 7 if (!string.IsNullOrEmpty(dt.TableName)) 8 { 9 sheetName = dt.TableName;

Transact-SQL 返回最新插入行的标识

我们经常会遇到以下问题,即如何获取最新插入记录的标识? 这样的需求很常见,下面就来介绍Transact-SQL提供的三种获取标识的方法.(1) IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值.(2) @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值.(3) SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值. (1) IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值.    语法:I

Java Excel 插入图片

在POI中有HSSFPatriarch对象,该对象为画图的顶级管理器,它的createPicture(anchor, pictureIndex)方法就能够在Excel插入一张图片.所以要在Excel中插入图片,三步就可以搞定. 一.获取HSSFPatriarch对象, 二.new HSSFClientAnchor对象, 三.调用createPicture方法即可. 实现倒是非常容易实现,如果想把它做好还是有点儿难度的.这里我们先插入一张图片: public class ExcelImageTes

INSERT INTO插入行记录

--添加一条记录 INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3) --添加多条记录 INSERT INTO tableName(col1,col2,col3) SELECT 3,4,5 UNION ALL SELECT 6,7,8 --从另外的一张表中读取多条数据添加到新表中 INSERT INTO tableName(col1,col2,col3) SELECT a,b,c FROM tableA --从其他的多张表中读取数据添加到新表

FineReport——插入行策略

1.空值是默认的选项,即每次插入新行时,格子都是空白的. 2.原值即单元格中原有内容是什么,就复制到新增的格子中,一般适用于单元格是使用公式定义的, 在插入单元格时,公式会保留下来. 3.默认值即通过定义字符串,数字,布尔型,日期型或公式型来定义添加行时单元格内的内容.除公式类型外,其它的类型仅仅是插入内容格式的不同,但每次插入的都是固定值.可以使用公式插入动态的值. 示例:如果插入行的数据是上一行的数据,则插入行策略为默认值,并定义公式,通过层次坐标调用上一层数据.

NPOI导出数据到Excel

NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 方法 先去官网:http://npoi.codeplex.com/下载需要