下面例子为创建产生一个excel,合并单元格,然后为合并后的单元格添加边框

package test; import java.io.FileOutputStream;import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.BorderStyle;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.ss.usermodel.HorizontalAlignment;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.ss.util.RegionUtil; public class ExcelPoiTest { public static void main(String[] args) {HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个excel// excel生成过程: excel-->sheet-->row-->cellHSSFSheet sheet = workbook.createSheet("test"); // 为excel创建一个名为test的sheet页HSSFRow row = sheet.createRow(1); // 创建一行,参数2表示第一行HSSFCell cellB2 = row.createCell(1); // 在B2位置创建一个单元格HSSFCell cellB3 = row.createCell(2); // 在B3位置创建一个单元格cellB2.setCellValue("单元格B2"); // B2单元格填充内容cellB3.setCellValue("单元格B3"); // B3单元格填充内容HSSFCellStyle cellStyle = workbook.createCellStyle(); // 单元格样式Font fontStyle = workbook.createFont(); // 字体样式fontStyle.setBold(true); // 加粗fontStyle.setFontName("黑体"); // 字体fontStyle.setFontHeightInPoints((short) 11); // 大小// 将字体样式添加到单元格样式中 cellStyle.setFont(fontStyle);// 边框,居中cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setBorderBottom(BorderStyle.THIN);cellStyle.setBorderLeft(BorderStyle.THIN);cellStyle.setBorderRight(BorderStyle.THIN);cellStyle.setBorderTop(BorderStyle.THIN);cellB2.setCellStyle(cellStyle); // 为B2单元格添加样式// 合并单元格CellRangeAddress cra =new CellRangeAddress(1, 3, 1, 3); // 起始行, 终止行, 起始列, 终止列sheet.addMergedRegion(cra);// 使用RegionUtil类为合并后的单元格添加边框RegionUtil.setBorderBottom(1, cra, sheet); // 下边框RegionUtil.setBorderLeft(1, cra, sheet); // 左边框RegionUtil.setBorderRight(1, cra, sheet); // 有边框RegionUtil.setBorderTop(1, cra, sheet); // 上边框// 输出到本地String excelName = "/myExcel.xls";FileOutputStream out = null;try {out = new FileOutputStream(excelName);workbook.write(out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();} finally {if (out != null)try {out.close();} catch (IOException e) {e.printStackTrace();}out = null;}} }

生成的excel样式为

简单说明:

1.excel生成过程: excel-->sheet-->row-->cell 2.索引从0开始

3.合并单元格后保留最左上角的单元格(B3单元格被B2单元格覆盖)

4.合并后单元格边框通过RegionUtil设置,如果删除以下代码

// 使用RegionUtil类为合并后的单元格添加边框RegionUtil.setBorderBottom(1, cra, sheet); // 下边框RegionUtil.setBorderLeft(1, cra, sheet); // 左边框RegionUtil.setBorderRight(1, cra, sheet); // 有边框RegionUtil.setBorderTop(1, cra, sheet); // 上边框

效果为:

可以看到只有B2单元格有边框。

相关文章