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