第四章——IWorkBook 接口常规使用的属性及方法

9 篇文章 8 订阅

前言:本文记录IWorkBook 接口常用的属性及常用的方法

IWorkBook 是什么?

IWorkBook我们可以理解为就是一个Excel文件,NPOI操作excel,第一步都是先获取或声明一个对应wookbook的对象。其中:
xls文件对应的类是:HSSFWorkBook
xlsx文件对应的类是:XSSFWorkBook
但是这两个类都继承接口:IWorkBook。在实际使用中,为了更好的操作,我们都是通过操作IWorkBook以接口的形式操作Excel。(这样就不用去区分是操作xls文件还是操作xlsx的文件,这种模式正式面向对象多态的特点)

常用的属性及方法
public  class WorkBookDemo
   {
        /// <summary>
        /// npoi读取指定路径下的excel
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public IWorkbook GetWorkBook(string filePath)
        {
            Stream stream = File.OpenRead(filePath);
            XSSFWorkbook workbook = null;
            workbook = new XSSFWorkbook(stream);//xlsx后缀名的excel文件的文件流,如果是xls文件的文件流,执行会报错
            Console.WriteLine(string.Format("读取了{0}文件,excel文件共有{1}个sheet页面", filePath, workbook.NumberOfSheets));
            return workbook;
        }

        /// <summary>
        /// workbook的属性
        /// </summary>
        public void ProPertyDemo()
        {
            Console.WriteLine("workbook的属性使用");
            string filePath = "D:\\NPOITest.xlsx";
            IWorkbook workbook = GetWorkBook(filePath);

            //ActiveSheetIndex:工作簿显示的sheet页最大数量(从0开始)
            int activeSheetIndex= workbook.ActiveSheetIndex;
            Console.WriteLine("ActiveSheetIndex="+ activeSheetIndex);
            //FirstVisibleTab:?
            int firstVisibleTab = workbook.FirstVisibleTab;
            Console.WriteLine("FirstVisibleTab=" + firstVisibleTab);
            //bool isHidden = workbook.IsHidden;//不能使用获取会报错

            //NumberOfSheets:workbook共有几个sheet(包含已经隐藏的sheet)
            int numberOfSheets = workbook.NumberOfSheets;
            Console.WriteLine("NumberOfSheets=" + numberOfSheets);
        }

        /// <summary>
        /// 一些方法使用的demo
        /// </summary>
        public void MethodDemo()
        {
            Console.WriteLine("workbook的方法的使用");
            string filePath = "D:\\NPOITest.xlsx";
            IWorkbook workbook = GetWorkBook(filePath);
            //创建一个sheet----sheet页名称默认为sheet*
            ISheet sheet1= workbook.CreateSheet();
            //创建一个sheet----指定创建的sheet页的名称
            ISheet sheet2 = workbook.CreateSheet("testdemo1");
            //根据下标克隆一个sheet----sheet页名称默认为***(*)
            ISheet sheet3= workbook.CloneSheet(1);
            //根据下标克隆一个sheet----指定sheet页名称为****
            //ISheet sheet4 = workbook.CloneSheet(0,"copySheet0");  //iworkbook 接口没有这个方法,继承类xssfworkbook 有这个方法
            //根据sheet页名称获取sheet页
            ISheet sheet4 = workbook.GetSheet("testdemo1");
            //根据sheet页下标获取sheet页
            ISheet sheet5 = workbook.GetSheetAt(1);
            //根据sheet页名称获取sheet页对应的下标
            int sheetIndex1 = workbook.GetSheetIndex("testdemo1");
            //根据sheet页对象获取sheet页对象的下标
            int sheetIndex2 = workbook.GetSheetIndex(sheet5);
            //根据sheet页下标获取sheet页名称
            string sheetName = workbook.GetSheetName(0);
            //根据sheet页下标判断sheet页是否隐藏
            bool isHidden1 = workbook.IsSheetHidden(0);
            //根据下标移除sheet
            workbook.RemoveSheetAt(0);
            //设置sheet隐藏/显示----0:显示,1:隐藏,2:VeryHidden
            int deomindex = workbook.GetSheetIndex("testdemo1");
            workbook.SetSheetHidden(deomindex, 1);
            //设置sheet隐藏/显示
            workbook.SetSheetHidden(0,SheetState.Hidden);
            //设置sheet页的名称
            int sheetindex3 = workbook.GetSheetIndex("sheet3");
            workbook.SetSheetName(sheetindex3,"uptSheet3");//修改sheet3--》uptSheet3
            //设置sheet页的顺序
            workbook.SetSheetOrder("sheet0", 0);
            //将workbook的内容写给一个数据流---多数用于生成一个excel文件
            //string saveFilePath = string.IsNullOrEmpty(filePath) ? "D:\\text.xlsx" : filePath;
            //using (FileStream fs = File.OpenWrite(saveFilePath))
            //{
            //    workbook.Write(fs);//向打开的这个xls文件中写入并保存。
            //}
            //关闭workbook的读取----无法使用.Write()方法
            //workbook.Close();//尽量不要使用

            //创建一个单元格样式操作对象
            ICellStyle cellStyle= workbook.CreateCellStyle();
            //创建一个字体操作对象
            IFont font = workbook.CreateFont();
            //创建一个数据格式操作对象
            IDataFormat format = workbook.CreateDataFormat();
            
            //不清楚是干什么的
            //IList<IName> listName = workbook.GetAllNames();
            
            //输出修改的新的excel----只有这样才能有效果
            CreateExcel(workbook,null);
        }


        private void CreateExcel(IWorkbook workBook,string filePath)
        {
            filePath = string.IsNullOrEmpty(filePath) ? "D:\\text.xlsx" : filePath;
            using (FileStream fs = File.OpenWrite(filePath))
            {
                workBook.Write(fs);//向打开的这个xls文件中写入并保存。
            }
        }
    }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值