SpringBoot导入Excel表格

这篇博客介绍了如何在SpringBoot应用中实现Excel表格的导入,包括引入相关依赖,创建导入工具类ImportExcelUtil,以及如何从单元格中获取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot导入Excel表格

1、引入依赖

 <!-- 导入Excel表格所需要的包 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>RELEASE</version>
        </dependency>

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

2、创建导入表格工具类ImportExcelUtil

3、工具类

public class ImportExcelUtil {

    public Map importExcel(MultipartFile file){
        Map map = new HashMap();
        //接收表格中数值
        Object obj = null;
        //输入流
        InputStream ip = null;
        try {
            ip = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Workbook wb = null;
        try {
            //将文件放入能够操作的workbook类中
            wb = new XSSFWorkbook(ip);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //默认获取第一个表格的数据
        Sheet sheet = wb.getSheetAt(0);
        //可以根据表格名字获取表格
        //sheet1是表格的名字
        //Sheet sheet = wb.getSheet("sheet1");
        //获取当前有多少行
        Integer lastrow = sheet.getLastRowNum();
        for(int i =0; i<lastrow; i++){
            //获取第一行数据
            Row row = sheet.getRow(i);
            for(int j = 0 ;j<row.getLastCellNum();j++){
               //获取第一行第一个单元格
                Cell cell = row.getCell(j);
                //判断单元格是否为空
                if(cell != null){
                    //获取单元格内的数据
                    obj = gainExcelValue(cell);
                    //存储到map中
                    map.put(i+","+j,obj);
                }
            }
        }
        return map;
    }

4、获取单元格的值

public Object gainExcelValue(Cell cell) {
		//接收数据的变量
		Object obj = null;
		//判断变量的类型
		switch(cell.getCellType()) {
		case BOOLEAN:
			//布尔
			obj = cell.getBooleanCellValue();
			break;
		case ERROR:
			obj = cell.getErrorCellValue();
			break;
		case FORMULA:
			//公式
			try {
                obj = String.valueOf(cell.getStringCellValue());
            } catch (IllegalStateException e) {
            	//首先将获取的数据转换成String类型
                String valueOf = String.valueOf(cell.getNumericCellValue());
                //将数据转换成bigdecimal数据类型
                BigDecimal bd = new BigDecimal(Double.valueOf(valueOf));
                //将小数转换成小数点后两位并且四舍五入
                bd = bd.setScale(2, RoundingMode.HALF_UP);
                obj = bd;
            }
			break;
		case NUMERIC:
			//数字
			obj = cell.getNumericCellValue();
			break;
		case STRING:
			//字符串
			String value = cell.getStringCellValue();
			//去除字符串中的(空格,换行,缩进)
			value = value.replace(" ","");
			value = value.replace("\n", "");
			value = value.replace("\r", "");
			obj = value;
			break;
		default:
			break;
		}
		return obj;
	}
只能简单的获取单元格中的数值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耗子尾汁123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值