NPOI给单元格加范围边框

时间:2023-12-17 11:42:20

HSSFWorkbook workbook2 = new HSSFWorkbook();
        //XSSFWorkbook workbook2 = new XSSFWorkbook();//建立Excel2007对象
        HSSFSheet sheet1;
        /// <summary>
        /// 99乘法表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            sheet1 = (HSSFSheet )workbook2.CreateSheet("Sheet1");
            for (int rowIndex = 0; rowIndex < 9; rowIndex++)
            {
                HSSFRow row = (HSSFRow)sheet1.CreateRow(rowIndex);
                for (int colIndex = 0; colIndex <= rowIndex; colIndex++)
                {
                    HSSFCell cell = (HSSFCell)row.CreateCell(colIndex);
                    cell.SetCellValue(String.Format("{0}*{1}={2}", rowIndex + 1, colIndex + 1, (rowIndex + 1) * (colIndex + 1)));
                }
            }
            //加范围边框
            AddRengionBorder(0, 9, 0, 9);
            FileStream fs = new FileStream(@"C:\Users\Administrator\Desktop\aa.xls", FileMode.Create, FileAccess.Write);
            workbook2.Write(fs);
            fs.Dispose();
            MessageBox.Show("导出OK");
        }

/// <summary>
        /// 加范围边框
        /// </summary>
        /// <param name="firstRow">起始行</param>
        /// <param name="lastRow">结束行</param>
        /// <param name="firstCell">起始列</param>
        /// <param name="lastCell">结束列</param>
        /// <returns></returns>
        public void AddRengionBorder(int firstRow, int lastRow, int firstCell, int lastCell)
        {
            //HSSFCellStyle Style = (HSSFCellStyle)workbook2.CreateCellStyle();
            for (int i = firstRow; i < lastRow; i++)
            {
                for (int n = firstCell; n < lastCell; n++)
                {
                    ICell cell;
                    cell = sheet1.GetRow(i).GetCell(n);
                    if (cell == null)
                    {
                        cell = sheet1.GetRow(i).CreateCell(n);
                        cell.SetCellValue(" ");
                    }
                    HSSFCellStyle Style = workbook2.CreateCellStyle() as HSSFCellStyle;
                    ////为首行加上方边框
                    if (i == firstRow)
                    {
                        Style.BorderTop = ss.UserModel.BorderStyle.THIN;
                    }
                    //为末行加下方边框
                    if (i == lastRow-1)
                    {
                        Style.BorderBottom = ss.UserModel.BorderStyle.THIN;
                    }
                    //为首列加左边框
                    if (n == firstCell)
                    {
                        Style.BorderLeft = ss.UserModel.BorderStyle.THIN;
                    }
                    //为末列加右边框
                    if (n == lastCell-1)
                    {
                        Style.BorderRight = ss.UserModel.BorderStyle.THIN;
                    }
                    cell.CellStyle = Style;
                }

}
        }
    }