zoukankan      html  css  js  c++  java
  • NPOI操作Excel 踩坑记

    1 读取Excel并修改单元格

    a.一定不能一边读数据,一边修改单元格,否则读出来的数据可能不准

    b.注意写文件的模式,不然修改后的文件,打开会报错。

    c.清空单元格的数据,可以调用SetCellType(CellType.Blank);

    public void ReadXlsx()
    {
        XSSFWorkbook workbook = null;
        string fileName = @"C:***9DataLayerMainTestdocumentsxxx.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;

  • 相关阅读:
    线性代数思维导图——3.向量
    微分中值定理的基础题型总结
    构造函数
    Python课程笔记(七)
    0241. Different Ways to Add Parentheses (M)
    0014. Longest Common Prefix (E)
    0013. Roman to Integer (E)
    0011. Container With Most Water (M)
    0010. Regular Expression Matching (H)
    0012. Integer to Roman (M)
  • 原文地址:https://www.cnblogs.com/tianxue/p/7308668.html
Copyright © 2011-2022 走看看