NPOI操作Excel 踩坑记
1 读取Excel并修改单元格
a.一定不能一边读数据,一边修改单元格,否则读出来的数据可能不准
b.注意写文件的模式,不然修改后的文件,打开会报错。
c.清空单元格的数据,可以调用SetCellType(CellType.Blank);
public void ReadXlsx() { XSSFWorkbook workbook = null; string fileName = @"C:\***\09DataLayer\MainTest\documents\xxx.xlsx"; using (FileStream stream = File.OpenRead(fileName)) { workbook = new XSSFWorkbook(stream); } //XSSFSheet XSSFSheet sheet = workbook.GetSheetAt(0) as XSSFSheet; //获取名称是“菜鸟”的表。 List<ICell> updateList = new List<ICell>(); List<string> formulaList = new List<string>(); for (int row = sheet.FirstRowNum; row <= sheet.LastRowNum; row++) { var rowData = sheet.GetRow(row); for (int colomn = rowData.FirstCellNum; colomn <= rowData.LastCellNum; colomn++) { var value = rowData.GetCell(colomn); if (value != null && !value.CellStyle.IsLocked) { updateList.Add(value); } if (value != null && value.CellType == CellType.Formula) { formulaList.Add(value.CellFormula + "," + value.CellStyle.IsLocked); } } } foreach (var item in updateList) { item.CellStyle.IsLocked = true; item.SetCellType(CellType.Blank); } using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.Write)) { workbook.Write(fs); fs.Close(); } }
2 对于NOPI 2.4.0版本记得设置字体大小
不然会报需要修复,点了修复之后,显示出来的表格还是有问题
NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();
// 正常大小的字体
cellfont.FontHeightInPoints = 11;
作者:BestNow
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。