C#使用NPOI读写Excel的注意事项


NPOI的基本使用参照:https://www.cnblogs.com/lixiaobin/p/NPOI.html

既存文档读取修改方法

*既存Excel文档修改保存注意使用FileMode.Create,不然文档将会被损害无法打开。

*Excel文档不能有开启共享,不能有Object对象存在,否则重写的Excel文档会被损害无法打开。

            IWorkbook book = null;
            using (var file = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read))
            {
                book = WorkbookFactory.Create(file);
                file.Close();
            }

            ISheet outputSheet = book?.GetSheet(sheetName) ?? book?.CreateSheet(sheetName);

            // 修改数据
            // 省略

            using (var file = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                book.Write(file);
                file.Close();
            }

 

单元格复制方法

如果你想将一个Excel文档的值复制到另一个Excel文档,格式设置需要注意使用CloneStyleFrom方法。(最多只能创建4000个CellStyle)

            var sheet = book.CreateSheet("test");
            var row = sheet.CreateRow(1);

            var newCell=row.CreateCell(1);
            newCell.SetCellValue(oldCell.StringCellValue);

            var newCellStyle = book.CreateCellStyle();
            newCellStyle.CloneStyleFrom(oldCell.CellStyle);

            newCell.CellStyle = newCellStyle;

颜色自定义

如果NPOI自带的颜色不满足要求,可以自定义颜色。HSSFWorkbook的时候只能替换设置,XSSFWorkbook的场合是可以添加新的色调。

            var style = workbook.CreateCellStyle();
            style.BorderBottom = BorderStyle.Thin;
            style.BorderLeft = BorderStyle.Thin;
            style.BorderRight = BorderStyle.Thin;
            style.BorderTop = BorderStyle.Thin;

            var sysColor = Color.FromArgb(0, 32, 96);
            if (workbook is HSSFWorkbook)
            {
                style.FillForegroundColor = IndexedColors.DarkBlue.Index;
                ((HSSFWorkbook)workbook).GetCustomPalette().SetColorAtIndex(IndexedColors.DarkBlue.Index, sysColor.R, sysColor.G, sysColor.B);
            }
            else
            {
                ((XSSFCellStyle)style).SetFillForegroundColor(new XSSFColor(sysColor));
            }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM