Java Excel单元格格式

在Java中,我们经常需要处理Excel文件并对其中的单元格进行格式化。Excel单元格格式可以控制单元格的文本、数字、日期等的显示方式,使得数据更加易读和美观。本文将介绍如何使用Java代码实现Excel单元格格式的操作。

导入依赖

要在Java中处理Excel文件,我们需要使用Apache POI库。POI库是一个用于读写Microsoft Office文件的Java库,包括Excel、Word和PowerPoint等文件格式的操作。可以在Maven项目中添加以下依赖以导入POI库:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

创建Excel文件

首先,我们需要创建一个Excel文件,并在其中添加一些数据。下面的代码示例展示了如何创建一个包含两列数据的Excel文件,并将数据添加到单元格中:

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

public class ExcelCellFormattingExample {
    public static void main(String[] args) throws Exception {
        // 创建一个新的工作簿
        Workbook workbook = new XSSFWorkbook();
        
        // 创建一个工作表
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // 创建标题行
        Row headerRow = sheet.createRow(0);
        Cell headerCell1 = headerRow.createCell(0);
        headerCell1.setCellValue("姓名");
        Cell headerCell2 = headerRow.createCell(1);
        headerCell2.setCellValue("年龄");
        
        // 添加数据行
        Row dataRow1 = sheet.createRow(1);
        Cell dataCell1 = dataRow1.createCell(0);
        dataCell1.setCellValue("张三");
        Cell dataCell2 = dataRow1.createCell(1);
        dataCell2.setCellValue(25);
        
        Row dataRow2 = sheet.createRow(2);
        Cell dataCell3 = dataRow2.createCell(0);
        dataCell3.setCellValue("李四");
        Cell dataCell4 = dataRow2.createCell(1);
        dataCell4.setCellValue(30);
        
        // 保存Excel文件
        FileOutputStream outputStream = new FileOutputStream("example.xlsx");
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
}

运行以上代码后,将生成一个名为"example.xlsx"的Excel文件,并包含两列数据。

单元格格式化

在Excel中,可以对单元格进行各种格式化,例如设置数字的小数位数、日期的格式等。下面的代码示例演示了如何使用POI库对Excel单元格进行格式化:

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

public class ExcelCellFormattingExample {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        
        Row headerRow = sheet.createRow(0);
        Cell headerCell1 = headerRow.createCell(0);
        headerCell1.setCellValue("姓名");
        Cell headerCell2 = headerRow.createCell(1);
        headerCell2.setCellValue("年龄");
        
        Row dataRow1 = sheet.createRow(1);
        Cell dataCell1 = dataRow1.createCell(0);
        dataCell1.setCellValue("张三");
        Cell dataCell2 = dataRow1.createCell(1);
        dataCell2.setCellValue(25);
        
        Row dataRow2 = sheet.createRow(2);
        Cell dataCell3 = dataRow2.createCell(0);
        dataCell3.setCellValue("李四");
        Cell dataCell4 = dataRow2.createCell(1);
        dataCell4.setCellValue(30);
        
        // 格式化第二列为数字格式,保留一位小数
        CellStyle numericCellStyle = workbook.createCellStyle();
        DataFormat dataFormat = workbook.createDataFormat();
        numericCellStyle.setDataFormat(dataFormat.getFormat("0.0"));
        dataCell2.setCellStyle(numericCellStyle);
        dataCell4.setCellStyle(numericCellStyle);
        
        // 保存Excel文件
        FileOutputStream outputStream = new FileOutputStream("example.xlsx");
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
}

在上述代码中,我们首先创建了一个CellStyle对象,并使用setDataFormat方法设置其数据格式为"0.0",这表示保留一位小数。然后,我们将此格式应用于第二列的单元格dataCell2dataCell4

运行代码后,生成