zoukankan      html  css  js  c++  java
  • .Net使用NPOI实现在Excel第一行插入文字

    产品提出新需求,要在用户所有上传的订单附件中的最前方加入订单号,本以为是小需求,结果确意外的踩了不少坑,下面说一下我踩坑的全部过程:

    1.使用CreateRow创建行

    最开始的预期是CreateRow(0)就可以完全实现这个小需求了,结果没想到的是,我们的需求是创建新行的同时,其他所有内容下移,CreateRow只能在所在位置创建行,如果该行有内容,将被替换。

    2.使用CopyRow复制行再编辑

    理想很丰满,显示却很骨感,复制是复制下来了,但是如果第一行是两行合并的话,那就复制了个寂寞,依然会把第一行替换掉。

    3.使用ShiftRows移动

    ShiftRows方法可以将当前行下移,之前考虑不周,只移动一行,发现会把下一行覆盖就pass了,结果走投无路后回想起来才发现自己是多么的愚蠢。将整个表格的内容全部下移不就可以了吗,最后操作下来证明这个思路是可行的。

    ShiftRows参数说明:

    startRow开始行

    endRow结束行

    n下移的行数

    copyRowHeight复制行高 (感觉不好用)

    resetOriginalRowHeight重置行高

            /// <summary>
            /// 向Excel插入行
            /// </summary>
            /// <param name="filePath">文件绝对路径</param>
            /// <param name="content">插入内容</param>
            public void AddHeadInfo(string filePath, string content)
            {
                string fileExt = Path.GetExtension(filePath).ToLower();//获取扩展名
                IWorkbook workbook;  
    
                    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                    {
                        if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(fs); } else { workbook = null; }
                        if (workbook == null) { return; }
                        ISheet sheet = workbook.GetSheetAt(0);
                        //将表格内容整体下移
                        sheet.ShiftRows(0, sheet.LastRowNum, 1);
                        var newrow = sheet.CreateRow(0);
                        newrow.CreateCell(0);
                        newrow.Cells[0].SetCellValue(content);
    
                        IFont font = workbook.CreateFont();//创建字体样式
                        font.Color = HSSFColor.Red.Index;//设置字体颜色
                        if (fileExt == ".xlsx")
                        {
                            newrow.HeightInPoints = 20;
                            font.FontHeight = 14;
                        }
                        else
                        {
                            newrow.HeightInPoints = 20;
                            font.FontHeight = 280;
                        }
                        ICellStyle style = workbook.CreateCellStyle();//创建单元格样式
    
                        style.SetFont(font);//设置单元格样式中的字体样式
                        newrow.Cells[0].CellStyle = style;//为单元格设置显示样式 
                        FileStream out2 = new FileStream(filePath, FileMode.Create);
                        workbook.Write(out2);
                        out2.Close();
                    }
    
            }
    
  • 相关阅读:
    js技巧大全
    DOM
    网页页面跳转几种方法
    JavaScript中创建对象的几种方式
    web本地存储-UserData
    图片预加载
    闭包
    JavaScript高级编程学习笔记(第三章之一)
    .net core 部署到ubuntu
    fiddler autoresponder 动态修改响应内容
  • 原文地址:https://www.cnblogs.com/yindi0712/p/13447726.html
Copyright © 2011-2022 走看看