NOPI用法之Excel基本操作

NOPI用法之Excel基本操作

前言
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NOPI相關dll下載https://pan.baidu.com/s/1kBNQMuwxSmo7FQsvEV5Flw,提取碼:h2g6

  1. 創建ExcelSheet
 /// <summary>
       /// 創建Sheet
       /// </summary>
       /// <param name="hssfworkbook"></param>
       /// <param name="sheetName">sheet名</param>
       /// <returns></returns>
        public List<HSSFSheet> creatExcelSheet(ref HSSFWorkbook hssfworkbook,List<string> sheetName)
        {
            List<HSSFSheet> ExcelSheet = new List<HSSFSheet>();

            hssfworkbook = new HSSFWorkbook();//創建excel
            HSSFSheet sheet = null;
            for (int i = 0; i < sheetName.Count; i++)
            {
                sheet = (HSSFSheet)hssfworkbook.CreateSheet(sheetName[i]);//創建sheet
                ExcelSheet.Add(sheet);
            }
            return ExcelSheet;
        }

2、創建單元格

  /// <summary>
        /// 創建單元格
        /// </summary>
        /// <param name="ExcelSheet">sheet名</param>
        /// <param name="rowIndex">第rowIndex行</param>
        /// <param name="cellIndex">第cellIndex列</param>
        /// <param name="cellValue">單元格值</param>
        public void creatExcelCell(HSSFSheet ExcelSheet, int rowIndex, int cellIndex, string cellValue)
        {
            HSSFRow excelRow = (HSSFRow)ExcelSheet.CreateRow(rowIndex);//創建行
            ICell excelCell= excelRow.CreateCell(cellIndex);//創建單元格
            excelCell.SetCellValue(cellValue);
        }

3、完成Excel創建

/// <summary>
        /// 完成Excel創建
        /// </summary>
        /// <param name="hssfworkbook"></param>
        /// <param name="excelPath">excel路徑</param>
        /// <param name="excelName">excel名</param>
        /// <param name="deleteCurrenExcel">若excel存在,是否刪除</param>
        public void createExcelFinish(HSSFWorkbook hssfworkbook, string excelPath, string excelName, bool deleteCurrenExcel)
        {
            if (deleteCurrenExcel == true)
            {
                //若文件存在,則刪除
                if (File.Exists(excelPath + excelName))
                {
                    File.Delete(excelPath + excelName);
                }
            }
            FileStream fileStream = new FileStream(excelPath + excelName, FileMode.Create);//創建文件流
            hssfworkbook.Write(fileStream);//excel寫入文件流
            fileStream.Close();//關閉文件流
            MessageBox.Show("文件" + excelName + "創建完成!", "提示");
        }

4、移除sheet

/// <summary>
        /// 移除sheet
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetIndex">sheet索引</param>
        public void removeSheet(HSSFWorkbook workbook,int sheetIndex)
        {
            workbook.RemoveSheetAt(sheetIndex);
        }

5、按名稱獲得Sheet對象

/// <summary>
        /// 按名稱獲得Sheet對象     
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetName">sheet名稱</param>
        /// <returns></returns>
        public HSSFSheet getSheetByName(HSSFWorkbook workbook,string sheetName)
        {
            HSSFSheet sheet = (HSSFSheet)workbook.GetSheet(sheetName);
            return sheet;
        }

6、根據索引獲得Sheet對象

/// <summary>
        /// 根據索引獲得Sheet對象                     
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetIndex">sheet索引</param>
        /// <returns></returns>
        public HSSFSheet getSheetByIndex(HSSFWorkbook workbook, int sheetIndex)
        {
            HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(sheetIndex);
            return sheet;
        }

7、獲得某一個ISheet的所有IRow

/// <summary>
        /// 獲得某一個ISheet的所有IRow
        /// </summary>
        /// <param name="sheet"></param>
        /// <returns></returns>
        public IEnumerator getSheetRow(HSSFSheet sheet)
        {
            IEnumerator SheetRow = sheet.GetRowEnumerator();
            return SheetRow;

        }

8、 獲得某一特定行

/// <summary>
        /// 獲得某一特定行
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex">行索引</param>
        /// <returns></returns>
        public HSSFRow getRowByIndex(HSSFSheet sheet,int rowIndex)
        {
            HSSFRow row =(HSSFRow)sheet.GetRow(rowIndex);
            return row;
        }

9、獲取Excel的單元格對象

  /// <summary>
        /// 獲取Excel的單元格對象
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex"></param>
        /// <param name="cellIndex"></param>
        /// <returns></returns>
        public HSSFCell getExcelCell(HSSFSheet sheet, int rowIndex, int cellIndex)
        {
            HSSFCell cell = (HSSFCell)sheet.GetRow(rowIndex).GetCell(cellIndex);
            return cell;
        }

10、合併單元格

 /// <summary>
        /// 合併單元格
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="regionDtata">合併單元格的左上角單元格及右下角單元格</param>
        public void RegionCell(HSSFWorkbook workbook,int sheetIndex,int[] regionDtata)
        {
            HSSFSheet sheet=getSheetByIndex(workbook, sheetIndex);
            sheet.AddMergedRegion(new CellRangeAddress(regionDtata[0], regionDtata[1], regionDtata[2], regionDtata[3]));
            HSSFCell cell= getExcelCell(sheet, regionDtata[0], regionDtata[1]);

            //設置居中
            HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle();
            style.VerticalAlignment = VerticalAlignment.CENTER;
            style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;
            cell.CellStyle = style;
        }

11、示例執行NOPI創建Excel

private void 創建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string excelPath = @"C:\Users\njtq\Desktop\NOPI\";
            string excelName = "test.xls";
            List<string> sheetName = new List<string>();
            sheetName.Add("sheet1");
            sheetName.Add("sheet2");
            HSSFWorkbook hssfworkbook=null;


            //創建sheet
            List<HSSFSheet> ExcelSheet = creatExcelSheet(ref hssfworkbook, sheetName);
             
            //創建cell
            creatExcelCell(ExcelSheet[0], 0, 0, "標題");
            int[] regionData = new int[4] { 0, 0, 0, 4 };

            //合併單元格
            RegionCell(hssfworkbook,0, regionData);

            //創建完成
            createExcelFinish(hssfworkbook, excelPath, excelName, true);
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章