Java 中如何给POI生成的Excel文件添加 Border?

如何使用java给POI生成的Excel文件添加 Border呢?求助下方案

阅读 1.3k
avatarAI BotBETA

在Java中,Apache POI库提供了许多方法来创建和操作Microsoft Office文档,包括Excel。要给POI生成的Excel文件添加边框,您可以使用CellStyle类和BorderStyle类。

以下是一个简单的示例,演示如何为单元格添加边框:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class AddBorderToExcel {
    public static void main(String[] args) throws IOException {
        Workbook workbook = new XSSFWorkbook(); // Use XSSF for xlsx format, HSSF for xls format
        Sheet sheet = workbook.createSheet("Border Example");

        // Create a row and put some cells in it. Rows are 0 based.
        Row row = sheet.createRow(0);
        Cell cell1 = row.createCell(0);
        Cell cell2 = row.createCell(1);
        Cell cell3 = row.createCell(2);

        // Create a style with a thin black border
        CellStyle style = workbook.createCellStyle();
        style.setBorderTop(BorderStyle.THIN);
        style.setBorderRight(BorderStyle.THIN);
        style.setBorderBottom(BorderStyle.THIN);
        style.setBorderLeft(BorderStyle.THIN);

        // Apply the style to the cells
        cell1.setCellStyle(style);
        cell2.setCellStyle(style);
        cell3.setCellStyle(style);

        // Set some cell values
        cell1.setCellValue("Cell 1");
        cell2.setCellValue("Cell 2");
        cell3.setCellValue("Cell 3");

        // Write the output to a file
        try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
            workbook.write(fileOut);
        }
    }
}

在这个示例中,我们首先创建一个Workbook对象和一个Sheet对象。然后,我们创建一个行和几个单元格。接下来,我们创建一个CellStyle对象,并使用setBorderTop(), setBorderRight(), setBorderBottom()setBorderLeft()方法为单元格的顶部、右侧、底部和左侧设置边框样式。最后,我们将样式应用于单元格,并设置单元格的值。最后,我们将工作簿写入文件。

2 个回答

给Excel设置边框可以使用Free Spire.XLS for Java,上、下、左、右、对角线边框等都可以设置

import com.spire.xls.*;

import java.awt.*;

public class SetBorders {
    public static void main(String[] args) {
        //创建Workbook类的对象
        Workbook wb = new Workbook();

        //加载Excel工作簿
        wb.loadFromFile("sample.xlsx");

        //获取第2个工作表
        Worksheet sheet = wb.getWorksheets().get(1);

        //获取单元格,设置内边框、外边框
        CellRange range1 = sheet.getCellRange("B2:G11");
        range1.borderInside(LineStyleType.Thin, Color.orange);
        range1.borderAround(LineStyleType.Medium, Color.green);

        //获取单元格,分别设置上、下、左、右边框
        CellRange range2 = sheet.getCellRange("B13:G20");
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeTop).setLineStyle(LineStyleType.Thin);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeTop).setColor(Color.red);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeBottom).setLineStyle(LineStyleType.Thin);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeBottom).setColor(Color.GREEN);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeLeft).setLineStyle(LineStyleType.Thin);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeLeft).setColor(Color.blue);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeRight).setLineStyle(LineStyleType.Thin);
        range2.getBorders().getByBordersLineType(BordersLineType.EdgeRight).setColor(Color.YELLOW);

        //设置单元格中的对角线边框
        CellRange range3 = sheet.getCellRange("F23:F25");
        range3.getBorders().getByBordersLineType(BordersLineType.DiagonalDown).setLineStyle(LineStyleType.Thin);
        CellRange range4 = sheet.getCellRange("F30:F32");
        range4.getBorders().getByBordersLineType(BordersLineType.DiagonalUp).setLineStyle(LineStyleType.Thin);

        //保存文档
        wb.saveToFile("SetBorders.xlsx",FileFormat.Version2013);
        wb.dispose();
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题