Chapter 3-NPOI create/read Excel simple case

Preface: XSSFWorkBook operates as Excel, creates new excel and reads records in several ways from existing excel files

Look at the code:
introduce namespace:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

Code:

public class XSSFWorkBookDemo
    {
    
    
        /// <summary>
        /// 使用npoi创建一个excel文件
        /// </summary>
        public void NPOICreateExcel()
        {
    
    
            //声明一个工作簿
            XSSFWorkbook workBook = new XSSFWorkbook();
            //创建一个sheet页
            ISheet sheet= workBook.CreateSheet();//sheet页默认名称sheet*
            ISheet sheet2 = workBook.CreateSheet("testSheet2");//指定sheet页名称为”testSheet2“
         
            //向第一行第一列的单元格添加文本“老王的demo”
            IRow row= sheet.GetRow(0);//获取第一行
            if (row==null)//workbook 创建的sheet里是获取不到对应的excel行和列的单元格对象
            {
    
    
                row= sheet.CreateRow(0);
            }
            ICell cell= row.GetCell(0);//获取第一列
            if (cell==null)
            {
    
    
                cell= row.CreateCell(0);
            }
            cell.SetCellValue("老王的Demo");
            //复制第一个sheet,新的sheet名为sheet*(*)
            ISheet sheet3 = workBook.CloneSheet(0);
            //复制第二个sheet,且设置新的sheet的名称为copySheet1
            workBook.CloneSheet(1, "copySheet1");
            //输出excel文件
            using (FileStream fs = File.OpenWrite("D:\\text.xlsx"))
            {
    
    
                workBook.Write(fs);//向打开的这个xls文件中写入并保存。
            }
        }

        /// <summary>
        /// npoi读取文件---读取指定位置的excel文件
        /// </summary>
        /// <param name="filePath">excel文件地址</param>
        public void NPOIReadExcel1(string filePath)
        {
    
    
            #region 方式一:读取指定路径的excel文件
            //验证文件类型
            int index= filePath.LastIndexOf('.');
            string excelType =index<0?"":filePath.Substring(index+1);
            IWorkbook workbook=null;
            if (excelType=="xls")
            {
    
    
                Console.WriteLine("xls类型的excle文件不可以通过文件路径读取文件");
            }
            else if (excelType=="xlsx")
            {
    
    
                workbook = new XSSFWorkbook(filePath);
            }
            else
            {
    
    
                Console.WriteLine("异常的文件,文件不是excel文件");
            }
            #endregion
            //获取excel有几个sheet页
            if (workbook!=null)
            {
    
    
                Console.WriteLine("读取到excel文件,且excel有"+workbook.NumberOfSheets+"个Sheet页");
            }
            else
            {
    
    
                Console.WriteLine("未能读取excel文件");
            }
        }

        /// <summary>
        /// NPOI读取excel文件方式二:以fileinfo对象进行读取
        /// </summary>
        /// <param name="filePath">文件路径</param>
        public void NPOIReadExcel2(string filePath)
        {
    
    
            //string filePath = "D:\\NPOITest.xlsx";
            IWorkbook workbook = null;
            FileInfo file = new FileInfo(filePath);
            //string type= file.GetType();
            if (file.Extension==".xlsx")
            {
    
    
                workbook = new XSSFWorkbook(file);
            }
            else if (file.Extension==".xls")
            {
    
    
                //workbook = new HSSFWorkbook(file);//没有fileinfo参数的构造方法
                Console.WriteLine("读取到了xls文件,npoi不可以以fileinfo的方式读取该文件");
            }
            else
            {
    
    
                Console.WriteLine("未知文件,后缀名:"+file.Extension);
            }
            if (workbook!=null)
            {
    
    
                Console.WriteLine("读取了excel文件:" + file.Name + ",且excel有" + workbook.NumberOfSheets + "个Sheet页");
            }
        }
        /// <summary>
        ///  NPOI读取excel文件方式二:以Stream对象进行读取
        /// </summary>
        /// <param name="filePath">文件路径</param>
        public void NPOIReadExcel3(string filePath)
        {
    
    
            Stream stream = File.OpenRead(filePath);
            IWorkbook workbook = null;
            workbook =new XSSFWorkbook(stream);//xlsx后缀名的excel文件的文件流,如果是xls文件的文件流,执行会报错
            //workbook = new HSSFWorkbook(stream);//xls后缀名的excel文件的文件流
            Console.WriteLine(string.Format("读取了{0}文件,excel文件有{1}个sheet页面",filePath,workbook.NumberOfSheets) );
        }
        /*
         * 还有XSSFWorkBook 的
         * XSSFWorkbook(XSSFWorkbookType workbookType);  构造方法不清楚使用场景
         * XSSFWorkbook(OPCPackage pkg);   构造方法不清楚使用场景
        */ 
    }

Guess you like

Origin blog.csdn.net/qq_39541254/article/details/107841535