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)); }