21xrx.com
2025-06-23 04:20:38 Monday
登录
文章检索 我的文章 写文章
Java实现Excel导出工具类,附带代码案例
2023-06-13 18:45:20 深夜i     33     0
Java Excel 工具类

Excel作为一种常用的电子表格软件,被广泛应用于数据统计、报表分析等领域。而在Java中,我们通常需要将数据以Excel表格的形式导出,以方便查看和使用。于是,开发一款Excel导出工具类就显得尤为重要。

下面,我们将使用Java语言开发一款Excel导出工具类,并提供代码案例供大家参考。

首先,我们需要准备好以下工具类:

apache POI库:Java编写的操作Office文档的开源库,包括对Excel、Word和PowerPoint等文档的读写操作。

jxl库:Java编写的操作Excel表格的库,支持Excel的读写、格式设置、图表操作等。

接下来,我们将以apache POI库为例,编写一个Excel导出工具类的代码。具体实现过程如下:

package com.example.util;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelExportUtil {
  /**
   * 导出Excel文件
   *
   * @param headers
   *      Excel文件的表头
   * @param dataList
   *      Excel文件的内容
   * @param filePath
   *      需要导出的Excel文件路径
   */
  public static void exportExcel(String[] headers, List
  dataList, String filePath) {
 
    try (Workbook workbook = new XSSFWorkbook(); FileOutputStream fos = new FileOutputStream(filePath)) {
      // 创建一个工作表
      Sheet sheet = workbook.createSheet();
      workbook.setSheetName(0, "Sheet1");
      // 设置表头样式
      CellStyle headerStyle = getHeaderStyle(workbook);
      // 创建表头行
      Row headerRow = sheet.createRow(0);
      for (int i = 0; i < headers.length; i++) {
        Cell cell = headerRow.createCell(i, CellType.STRING);
        cell.setCellValue(headers[i]);
        cell.setCellStyle(headerStyle);
      }
      // 设置数据样式
      CellStyle dataStyle = getDataStyle(workbook);
      // 添加数据行
      for (int i = 0; i < dataList.size(); i++) {
        Object[] rowObject = dataList.get(i);
        Row row = sheet.createRow(i + 1);
        for (int j = 0; j < rowObject.length; j++) {
          Cell cell = row.createCell(j, CellType.STRING);
          cell.setCellValue(rowObject[j] == null ? "" : rowObject[j].toString());
          cell.setCellStyle(dataStyle);
        }
      }
      // 自适应列宽
      for (int i = 0; i < headers.length; i++) {
        sheet.autoSizeColumn(i);
      }
      // 写入文件
      workbook.write(fos);
    } catch (IOException e) {
      throw new RuntimeException("导出Excel文件出错", e);
    }
  }
  /**
   * 设置表头样式
   *
   * @param workbook
   *      Excel工作薄
   * @return 表头样式
   */
  private static CellStyle getHeaderStyle(Workbook workbook) {
    Font font = workbook.createFont();
    font.setFontName("微软雅黑");
    font.setBold(true);
    font.setColor(IndexedColors.BLACK.getIndex());
    font.setFontHeightInPoints((short) 16);
    XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
    style.setBorderBottom(BorderStyle.THIN);
    style.setBorderLeft(BorderStyle.THIN);
    style.setBorderRight(BorderStyle.THIN);
    style.setBorderTop(BorderStyle.THIN);
    style.setAlignment(HorizontalAlignment.CENTER);
    style.setVerticalAlignment(VerticalAlignment.CENTER);
    style.setFillForegroundColor(new XSSFColor(new byte[] { (byte) 216, (byte) 216, (byte) 216 }, null));
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    style.setFont(font);
    return style;
  }
  /**
   * 设置数据样式
   *
   * @param workbook
   *      Excel工作薄
   * @return 数据样式
   */
  private static CellStyle getDataStyle(Workbook workbook) {
    Font font = workbook.createFont();
    font.setFontName("微软雅黑");
    font.setColor(IndexedColors.BLACK.getIndex());
    font.setFontHeightInPoints((short) 14);
    XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
    style.setBorderBottom(BorderStyle.THIN);
    style.setBorderLeft(BorderStyle.THIN);
    style.setBorderRight(BorderStyle.THIN);
    style.setBorderTop(BorderStyle.THIN);
    style.setAlignment(HorizontalAlignment.CENTER);
    style.setVerticalAlignment(VerticalAlignment.CENTER);
    style.setWrapText(true);
    style.setFont(font);
    return style;
  }
}

在上述代码中,我们使用了apache POI库提供的Workbook类创建了一个Excel工作薄,然后通过工作薄创建一个工作表Sheet,最后设置表头样式和数据样式,并将数据写入到工作表中。其中,数据行数由传入的数据列表决定,在写入数据的时候,我们使用了传入的数据行数动态创建行,根据数据列表的列数动态创建单元格。

现在,我们就可以根据自己的需要,调用ExcelExportUtil类中的exportExcel方法,将数据导出到Excel文件中。

  
  

评论区