您的屏幕截图显示的是网格线而不是边界线。这是电子表格的区别。网格线显示在应用程序窗口中只是为了更好地查看单元格。它们不会被打印出来。
如果您不想看到网格线,您可以切换到不显示整个工作表的网格线,我不建议这样做,或者您可以设置白色边框线,然后覆盖一些网格线。
既然你已经标记apache-poi-4
了,我将展示一个完整的例子,它使用高级方法CellUtil
并PropertyTemplate
产生你想要的东西。
代码:
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
class CreateExcelLeftRight {
public static void main(String[] args) throws Exception {
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {
//create font with bigger size
Font font = workbook.createFont();
font.setFontHeightInPoints((short)24);
Sheet sheet = workbook.createSheet();
//merge A1:E2
sheet.addMergedRegion(new CellRangeAddress(
0, //first row (0-based)
1, //last row (0-based)
0, //first column (0-based)
4 //last column (0-based)
));
//merge F1:H2
sheet.addMergedRegion(new CellRangeAddress(
0, //first row (0-based)
1, //last row (0-based)
5, //first column (0-based)
7 //last column (0-based)
));
//create row 1
Row row = sheet.createRow(0);
//create cell A1
Cell cell = row.createCell(0);
cell.setCellValue("LEFT");
CellUtil.setFont(cell, font);
CellUtil.setVerticalAlignment(cell, VerticalAlignment.CENTER);
//create cell F1
cell = row.createCell(5);
cell.setCellValue("RIGHT");
CellUtil.setFont(cell, font);
CellUtil.setVerticalAlignment(cell, VerticalAlignment.CENTER);
CellUtil.setAlignment(cell, HorizontalAlignment.RIGHT);
PropertyTemplate propertyTemplate = new PropertyTemplate();
//paint all inside borders white on A1:H2
propertyTemplate.drawBorders(new CellRangeAddress(0, 1, 0, 7),
BorderStyle.THIN, IndexedColors.WHITE.getIndex(), BorderExtent.INSIDE);
//paint all bottom borders thick gray on A2:H2
propertyTemplate.drawBorders(new CellRangeAddress(1, 1, 0, 7),
BorderStyle.THICK, IndexedColors.GREY_40_PERCENT.getIndex(), BorderExtent.BOTTOM);
propertyTemplate.applyBorders(sheet);
sheet.setActiveCell(new CellAddress(3, 0));
workbook.write(fileout);
}
}
}
结果: