excel的导入和下载(poi)

通过使用相关的Java库,如Apache POI、EasyPoi或EasyExcel,可以轻松地实现Excel文件的读写操作。

1.2 典型应用场景

  • 报表自动化生成(如导出统计表格)

  • 批量数据导入(如从Excel读取用户信息)

  • 文档模板填充(合同、通知等)

  • 服务器端文档格式转换

  • HSSF/XSSF:处理Excel(97-2003/2007+格式)

  • HWPF/XWPF:处理Word文档

  • HSLF/XSLF:处理PowerPoint

Maven依赖配置

复制代码
<!-- POI核心库 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<!-- 处理xlsx格式 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

创建第一个Excel文件

java 复制代码
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDemo {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook(); // 创建xlsx工作簿
        Sheet sheet = workbook.createSheet("用户列表");
        
        // 创建标题行
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("ID");
        headerRow.createCell(1).setCellValue("姓名");
        
        // 添加数据
        Row dataRow = sheet.createRow(1);
        dataRow.createCell(0).setCellValue(1);
        dataRow.createCell(1).setCellValue("张三");
        
        // 保存文件
        try (FileOutputStream fos = new FileOutputStream("demo.xlsx")) {
            workbook.write(fos);
        }
        workbook.close();
    }
}

读取数据

java 复制代码
    public static void read() throws Exception {
 
        // 读取磁盘上面已经存在的Excel文件
        XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream("盘符名:\\***\\123.xlsx"));
 
        // 读取Excel文件里面的第一个sheet页
        XSSFSheet sheet = excel.getSheetAt(0);
 
        // 获取最后一行有数据的文件
        int lastRowNum = sheet.getLastRowNum();
 
        for (int i = 0; i <= lastRowNum; i++) {
            // 获取某一行
            XSSFRow row = sheet.getRow(i);
            String cellValue1 = row.getCell(0).getStringCellValue();
            String cellValue2 = row.getCell(1).getStringCellValue();
            String cellValue3 = row.getCell(2).getStringCellValue();
 
            System.out.println(cellValue1 + "\t" + cellValue2 + "\t" + cellValue3);
        }
 
        // 关闭资源
        excel.close();
 
    }

三、Excel高级操作技巧

java 复制代码
// 创建单元格样式
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);

cell.setCellStyle(style); // 应用样式

合并单元格

java 复制代码
sheet.addMergedRegion(new CellRangeAddress(
    0, // 起始行
    0, // 结束行
    0, // 起始列
    3  // 结束列
));

处理日期与公式

java 复制代码
// 设置日期格式
CellStyle dateStyle = workbook.createCellStyle();
dateStyle.setDataFormat(workbook.createDataFormat().getFormat("yyyy-MM-dd"));
cell.setCellValue(new Date());
cell.setCellStyle(dateStyle);

// 设置公式
cell.setCellFormula("SUM(A1:A10)");
相关推荐
vipxieliang5 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
kybs19915 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
Bingo_BIG5 天前
Java Spring框架:单表的查询、新增、修改、删除、导入、导出
java·spring·前后端
码兄科技5 天前
24小时自助健身房系统软件开发实战指南:功能设计与部署方案
java·spring boot·uni-app
paopaokaka_luck5 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
牧瀬クリスだ5 天前
YAML配置详解:SpringBoot实战指南
java·spring·yml
需要8265 天前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
凤山老林5 天前
Spring Boot 应用 JVM 性能调优实战:GC 日志分析、堆内存规划与容器环境避坑
jvm·spring boot·gc·堆内存
计算机毕设定制辅导-无忧学长5 天前
《基于Vue的流浪动物救助中心管理系统的设计与实现》
java·vue.js·spring boot·流浪动物救助中心管理系统