zoukankan      html  css  js  c++  java
  • NPOI

    NPOI是POI的.net版本, 是能够帮助开发者在没有安装微软office的情况下读写office文件,支持的文件包括excel,word,ppt等
    NPOI.Util 基础辅助库
    NPOI.POIFS OLE2格式读写库
    NPOI.DDF Micosoft Drawing格式读写库
    NPOI.SS Excel公式计算库
    NPOI.HPSF OLE2的Summary Information和Document Summary Information属性读写库
    NPOI.HSSF   Excel BIFF格式读写库
     

    NPOI.HSSF是专门负责Excel BIFF格式的命名空间,供开发者使用的对象主要位于NPOI.HSSF.UserModel和NPOI.HSSF.Util命名空间下,Workbook的创建用的是NPOI.HSSF.UserModel.HSSFWorkbook类,这个类负责创建Excel文档

    创建一个Excel文档的步骤

    HSSFWorkbook wk = new HSSFWorkbook();//初始化一个实例
    //这个实例就相当于一个Excel文档,但是只是这样创建出的文档会报错,因为一个Excel文档中至少要有一个sheet(页)
    wk.CreateSheet("页名");//为文档添加一页
    FileStream file = new FileStream("路径和文件名",创建方式);//创建一个文件流
    wk.Write(file);//把实例传给文件流,创建出文件
    file.Close();//关闭文件流

     从excel读取数据,写入txt和从txt读取数据,写入excel的实例

    using System.Text;
    using System.Threading.Tasks;
    using NPOI.HSSF.UserModel;
    using NPOI.HSSF.Util;
    using System.IO;
    using NPOI.SS.UserModel;
    namespace NPOI_and_TXT
    {
       public class NPOItoTXT
        {
            public void toTXT() {
                FileStream fs = new FileStream(@"D:学习题
    poiNPOINPOIinDebug	est.xls",FileMode.Open,FileAccess.Read);
                FileStream fsn = new FileStream(@"D:学习题
    poiNPOINPOIinDebugi.txt", FileMode.Create,FileAccess.Write);
                StreamWriter sw = new StreamWriter(fsn,Encoding.Default);
                HSSFWorkbook wk = new HSSFWorkbook(fs);
                ISheet hs =wk.GetSheet("sheet1");
                for (int i = 0; i < hs.LastRowNum+1; i++)
                {
                    IRow ir = hs.GetRow(i);
                    for (int j = 0; j < ir.LastCellNum; j++)
                    {
                        sw.Write(ir.GetCell(j)+" ");
                    }
                    sw.WriteLine();
                }
                Console.WriteLine("更改txt成功");
                sw.Close();
                
            }
            
            
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NPOI.HSSF.UserModel;
    using NPOI.HSSF.Util;
    using System.IO;
    using NPOI.SS.UserModel;
    namespace NPOI_and_TXT
    {
        public class TXTtoNPOI
        {
            public void toNPOI() {
                FileStream fs = new FileStream(@"D:学习题
    poiNPOINPOIinDebugi.txt",FileMode.Open,FileAccess.Read);
                StreamReader sr = new StreamReader(fs,Encoding.Default);
                HSSFWorkbook hwb = new HSSFWorkbook();
                ISheet hs =  hwb.CreateSheet("sheet1");
                List<string[]> list = new List<string[]>();
                string line = sr.ReadLine();
                int w = 0;
                while (line!=null)
                {
                    HSSFRow row = (HSSFRow)hs.CreateRow(w);
                    string[] s = line.Split(' ');
                    list.Add(s);
                    for (int i = 0; i < s.Length; i++)
                    {
                        row.CreateCell(i).SetCellValue(list[w][i]);
                    }
                    line = sr.ReadLine();
                    w++;
                }
                Console.WriteLine("更改excel成功");
                FileStream file = new FileStream(@"D:学习题
    poiNPOINPOIinDebug	est.xls", FileMode.Create);
                hwb.Write(file);
                file.Close();
                fs.Close();
            }
        }
    }

    NPOI 高级功能

    调整页面缩放比例

    sheet.SetZoom(分子,分母) 
     
    锁定列
    被锁定的列无法修改,输入密码才可以解除锁定
    ICellStyle Islock = hsk.CreateCellStyle();//创建一个列样式对象
    Islock.IsLocked = true; //设置样式对象为锁定(false为不锁定)
    
    ICell cel = sheet.GetRow(1).GetCell(1);//获取一个列
    cel.CellStyle = Islock;//将样式对象赋给这个列
    
    sheet.ProtectSheet("密码");//设置解锁密码
     
    冻结行,列
    被冻结的行,列会固定位置,鼠标下滚依然会显示在原位置
    第一个参数表示要冻结的列数
    第二个参数表示要冻结的行数
    第三个参数表示右边区域默认的首例序号
    第四个参数表示下边区域默认的首例序号
    sheet.CreateFreezePane(3,1,10,10); //冻结第一行的前三列,右边和下面区域从第10格开始显示
     
    默认选中
    设为默认的列会在文档打开时自动选中
    cell.SetAsActiveCell();
    默认选中区域
    第一个参数表示从哪行开始
    第二个参数表示从哪行结束
    第三个参数表示从哪列开始
    第四个参数表示从哪列结束
    sheet.SetActiveCellRange(2,5,1,5); //第3行开始 第6行结束 第2列开始 第6列结束

    默认选中多个区域

    List<CellRangeAddress8Bit> cellranges = new List<CellRangeAddress8Bit>(){
      new CellRangeAddress8Bit(1,3,2,5),  
      new CellRangeAddress8Bit(6,7,8,9)  
    };//创建一个用来存储位置对象的list集合,并初始化两个位置
    sheet.SetActiveCellRange(cellranges,10,5,8);//把集合给页

    可视范围

    sheet.TopRow = 10;
    sheet.LeftCol = 10;
    //从顶部向下,左边向右10格后的范围才能看到
    默认页
    文档打开时会自动切换到默认页
    workbook.SetActiveSheet(1);//默认第二页 从0开始
     
    数据有效性
    检查输入的值是否符合条件,如果不对则会有提示
    CellRangeAddressList cr = new CellRangeAddressList(1,10,0,0);//创建一个位置对象,用来表示检查的区域
    DVConstraint constrain1 = DVConstraint.CreateDateConstraint(条件,"最小时间","最大时间","时间格式");//这是检查时间的方法,还有其他的检查方法
    HSSFDataValidation dataValidate1 = new HSSFDataValidation(检查区域,检查条件);
    dataValidate1.CreateErrorBox("标题","内容");//设置报错弹框
    sheet.AddValidationData(dataValidate1);
    组合数据
    组合后数据类似于可以收缩和展开,方便查看
    sheet.GroupRow(1,5);//组合第二行到第六行
    sheet.GroupColumn(1,3);//组合第二列到第四列
    隐藏网格
    设置文档的是否显示网格
    sheet.DisplayGridlines = false;//true 显示 false 不显示

     

  • 相关阅读:
    常用方法 反射常见方法
    常用方法 字符串是否是中文
    常用方法 读取 Excel的单位格 为 日期格式 的数据
    常用方法 保证数据长度相同
    常用方法 简单缓存
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P3905 道路重建
    关于宏定义
    P3512 [POI2010]PIL-Pilots
    P2398 GCD SUM
  • 原文地址:https://www.cnblogs.com/nicopoiduang/p/8886213.html
Copyright © 2011-2022 走看看