详解使用poi读取Excel中的数据和图片信息

本文详细介绍了如何在Springboot项目中使用Apache POI库读取包含图片的Excel文件。首先,文章提及了业务场景,即需要导入带有图片的Excel数据。接着,展示了如何在pom.xml中引入POI依赖,然后逐步讲解了读取单元格内容、存储图片到Map以及将图片保存到服务器的方法。文章以对空数据的处理收尾,总结了针对xlsx文件的POI使用技巧。
摘要由CSDN通过智能技术生成

背景

在一些业务需求下,比如导入excel数据,而这些excel文档中又包含图片等内容,那如何读取到excel图片内容,并保存下来呢?

解决方案

首先,在Springboot 环境下导入poi包,pom.xml如下

        <!--poi excel -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.16</version>
        </dependency>

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

导入excel文件方法,写库的部分,跟现在的说的业务无关,暂时可不关心

 public void ImportDeptdata(int mode,String filename) {
   
 /*
     如果是xls格式,使用HSSFWorkbook,HSSFSheet,HSSFRow来进行相关操作
     如果是xlsx格式,使用XSSFWorkbook,XSSFSheet,XSSFRow来进行相关操作,目前只支持xlsx
 */

 try {
   
     File cfgFile = ResourceUtils.getFile(filename);
     InputStream inputStream = new FileInputStream(cfgFile);
     //读取excel数据
     XSSFWorkbook wb = new XSSFWorkbook(inputStream);

     try{
   
         //获取sheet表格,及读取单元格内容
         XSSFSheet sheet = wb.getSheetAt(0);

         Map<String,String> tMap = saveExcelImgToServer(sheet);//读取excel图片文件,存储到服务器目录

         //先将获取的单元格设置为String类型,下面使用getStringCellValue获取单元格内容
         //如果不设置为String类型,如果单元格是数字,则报如下异常
         //java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
         int rowIndex = 3;
         while (true) {
   //设置无限循环
             int cellIndex = 0;
             if(sheet.getRow(rowIndex)==null || sheet.getRow(rowIndex).getCell(cellIndex)==null){
   //第一列为空,则数据读取结束,跳出循环
                 break;
             }
             sheet.getRow(rowIndex).getCell(cellIndex).setCellType(CellType.STRING);//将获取的单元格设置为String类型
             //读取单元格内容
             String cellDeptname = sheet.getRow(rowIndex).getCell(cellIndex).getStringCellValue(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值