Capítulo 4-Propiedades y métodos comúnmente utilizados por la interfaz de IWorkBook

Prefacio: este artículo registra los atributos y métodos de uso común de la interfaz de IWorkBook.

¿Qué es IWorkBook?

Podemos entender IWorkBook como un archivo de Excel, cuando NPOI opera excel, el primer paso es obtener o declarar un objeto correspondiente a wookbook. Donde: la clase correspondiente del archivo
XLS es: XSSFWorkBook
La clase correspondiente del archivo XLSX es HSSFWorkBook
pero ambas clases heredan la interfaz: IWorkBook. En el uso real, para un mejor funcionamiento, todos operamos Excel en forma de interfaz operando IWorkBook. (De esta manera, no es necesario distinguir entre archivos xls operativos y archivos xlsx, este modo es oficialmente una característica del polimorfismo orientado a objetos )

Atributos y métodos de uso común

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文件中写入并保存。
            }
        }
    }

Supongo que te gusta

Origin blog.csdn.net/qq_39541254/article/details/107841785
Recomendado
Clasificación