java使用springcloud读excel文档

准备工作

在pom文件中导入jar包

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

一、读取excel文件获取指定行

   //获取excel中某一列数据
    public List<String> readExcelColumn(String filePath, int columnIndex) throws IOException {
        List<String> columnData = new ArrayList<>();

        // 读取Excel文件
        InputStream inputStream = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(inputStream);

        // 获取第一个Sheet页(通常为Sheet0)
        Sheet sheet = workbook.getSheetAt(0);
        for (Row row : sheet) {
            // Assuming column index 0
            Cell cell = row.getCell(0);
            if (cell != null) {
                switch (cell.getCellType()) {
                    case STRING:
                        String stringValue = cell.getStringCellValue();
                        System.out.println("String Value: " + stringValue);
                        break;
                    case NUMERIC:
                        double numericValue = cell.getNumericCellValue();
                        System.out.println("Numeric Value: " + numericValue);
                        break;
                    case BOOLEAN:
                        boolean booleanValue = cell.getBooleanCellValue();
                        System.out.println("Boolean Value: " + booleanValue);
                        break;
                    case BLANK:
                        System.out.println("Blank cell");
                        break;
                    default:
                        System.out.println("Cell type not supported");
                }
            }
        }

        // 遍历每一行(从第一行开始,索引为0)
        for (Row row : sheet) {
            Cell cell = row.getCell(columnIndex);
            if (cell != null) {
                columnData.add(cell.getStringCellValue());
            } else {
                columnData.add(""); // 如果单元格为空,添加空字符串
            }
        }

        // 关闭流
        workbook.close();
        inputStream.close();

        return columnData;
    }

控制层调用:

    @GetMapping("/column/{columnIndex}")
    public List<String> readExcelColumn(@PathVariable int columnIndex) {
        String filePath = "D:\\ThePleasureOfWork\\test.xlsx"; // 替换为实际的Excel文件路径
        try {
            return excelService.readExcelColumn(filePath, columnIndex);
        } catch (IOException e) {
            e.printStackTrace();
            // 处理异常
            return null;
        }
    }

二、获取excel指定列数据

  //获取excel中某一行数据
    public void readExcelFile(String filePath) throws IOException {
        // 读取Excel文件
        InputStream inputStream = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(inputStream);

        // 获取第一个Sheet页(通常为Sheet0)
        Sheet sheet = workbook.getSheetAt(0);

        for (Row row : sheet) {
            // Assuming column index 0
            Cell cell = row.getCell(0);
            if (cell != null) {
                switch (cell.getCellType()) {
                    case STRING:
                        String stringValue = cell.getStringCellValue();
                        System.out.println("String Value: " + stringValue);
                        break;
                    case NUMERIC:
                        double numericValue = cell.getNumericCellValue();
                        System.out.println("Numeric Value: " + numericValue);
                        break;
                    case BOOLEAN:
                        boolean booleanValue = cell.getBooleanCellValue();
                        System.out.println("Boolean Value: " + booleanValue);
                        break;
                    case BLANK:
                        System.out.println("Blank cell");
                        break;
                    default:
                        System.out.println("Cell type not supported");
                }
            }
        }


        // 获取行数和列数
        int rowCount = sheet.getPhysicalNumberOfRows();
        int columnCount = sheet.getRow(0).getPhysicalNumberOfCells();

        // 假设要获取第一行(索引为0)的数据
        Row row = sheet.getRow(0);

        // 打印第一行每列的数据
        for (int col = 0; col < columnCount; col++) {



            Cell cell = row.getCell(col);
            System.out.print(cell.getStringCellValue() + "\t");
        }

        // 关闭流
        workbook.close();
        inputStream.close();
    }

控制层调用

   @GetMapping("/read")
    public void readExcel() {
        String filePath = "D:\\ThePleasureOfWork\\test.xlsx"; // 替换为实际的Excel文件路径
        try {
            excelService.readExcelFile(filePath);
        } catch (IOException e) {
            e.printStackTrace();
            // 处理异常
        }
    }

获取整个excel文件的数据

package com.tianlong.springcloud.utils;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @ProjectName: spting_cloud_demo01
 * @Package: com.tianlong.springcloud.utils
 * @ClassName: ExcelUtils
 * @Author: TianLong
 * @Description:
 * @Date: 2024/7/23 22:44
 * @Version: 1.0
 */
@Service
public class ExcelUtils {

    /**
     * 读取excel数据写到集合中
     * @param excelFilePath 文件地址
     * @return
     */
    public static List<List<String>> readExcel(String excelFilePath) {
        // 存储Excel数据的List
        List<List<String>> excelData = new ArrayList<>();

        try (FileInputStream fis = new FileInputStream(excelFilePath);
             XSSFWorkbook workbook = new XSSFWorkbook(fis)) {

            // 仅处理第一个Sheet
            Iterator<Row> rowIterator = workbook.getSheetAt(0).iterator();

            // 迭代处理每一行
            while (rowIterator.hasNext()) {
                Row row = rowIterator.next();
                Iterator<Cell> cellIterator = row.iterator();

                // 存储一行数据的List
                List<String> rowData = new ArrayList<>();
                // 迭代处理每个单元格
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    // 将所有单元格的内容转为String类型
                    rowData.add(cellToString(cell));
                }

                // 将一行数据添加到总数据List中
                excelData.add(rowData);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return excelData;
    }

    /**
     * 将单元格内容转为String
     * @param cell 单个单元格对象
     * @return
     */
    private static String cellToString(Cell cell) {
        //获取 Excel 单元格的数据类型
        switch (cell.getCellType()) {
            //字符串类型
            case STRING:
                return cell.getStringCellValue();
            //数字类型(包括日期和时间)
            case NUMERIC:
                return Double.toString(cell.getNumericCellValue());
            //布尔类型
            case BOOLEAN:
                return Boolean.toString(cell.getBooleanCellValue());
            //单元格为空
            case BLANK:
                return "";
            //其他类型
            default:
                return "";
        }
    }
}

控制层调用

    @GetMapping("/read12")
    public void readExcel1() {
        List<List<String>> excelData = excelUtils.readExcel("D:\\ThePleasureOfWork\\test.xlsx");
        System.out.println(excelData);
        List<Map<String,String>> liatMap = new ArrayList<>();
        Map<String,String> map = new HashMap<>();
        // 打印读取的数据
        for (int i = 0; i < excelData.size(); i++) {
            int j = 0;
            for (String cellValue : excelData.get(i)) {
                map.put("name"+ j++,cellValue);
            }
            liatMap.add(map);

        }
        System.out.println(liatMap);
//        for (List<String> row : excelData) {
//            for (String cellValue : row) {
//                System.out.print(cellValue + "\t");
//                map.put("name",cellValue);
//            }
//
//            System.out.println();
//        }

    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以提供一些有关使用JavaSpring Cloud开发电商项目的建议:1.使用Spring Boot搭建你的应用程序,这将极大地简化你的开发过程;2.使用Spring Cloud Netflix来构建你的微服务架构;3.将Spring Data JPA与你的数据库集成,来实现持久化操作;4.使用Spring Cloud Config来实现配置管理;5.使用Spring Security来实现安全认证;6.使用Spring Cloud Netflix Eureka来实现服务注册与发现;7.使用Spring Cloud Netflix Zuul来实现API网关;8.使用Spring Cloud Bus来实现消息总线;9.使用Spring Cloud Stream来实现消息驱动的微服务。 ### 回答2: 使用JavaSpring Cloud开发电商项目可以带来许多好处。Java是一种强大的编程语言,具有良好的跨平台性和丰富的开发工具和框架。而Spring Cloud是一个基于Spring框架的开发工具,它提供了一套方便的微服务组件,可以快速构建分布式系统。 使用JavaSpring Cloud开发电商项目,首先可以利用Java的面向对象特性来设计和开发项目的各个模块,使得代码结构清晰、可维护性强。同时,Java的丰富的库和框架可以提供很多功能模块的实现,例如数据库操作、网络通信、数据加密等,大大缩短了开发周期。 而Spring Cloud作为一个微服务框架,可以提供服务注册与发现、负载均衡、断路器、配置中心等解决方案,可以帮助开发者更轻松地实现分布式系统的各个模块。例如,使用Spring Cloud Eureka进行服务注册与发现,可以方便地管理服务之间的依赖关系,并提供自动负载均衡;使用Spring Cloud Config可以集中管理各个服务的配置信息,方便维护和修改。 在电商项目中,JavaSpring Cloud可以帮助我们实现用户管理、商品管理、订单管理等核心功能。我们可以使用Spring Cloud提供的服务注册与发现功能,将用户服务、商品服务、订单服务等拆分为独立的Spring Boot项目,并使用Feign或RestTemplate实现服务间的调用。这样,我们可以方便地扩展和修改各个模块,提高系统的可扩展性和可维护性。 总之,使用JavaSpring Cloud来开发电商项目是一个可行的选择。Java的强大和Spring Cloud的丰富功能可以帮助我们快速构建分布式系统,并能够方便地扩展和修改各个功能模块,提高开发效率和项目质量。 ### 回答3: 使用JavaSpring Cloud开发一个电商项目可以提供一个高效、可靠的电子商务平台。Java是一种范式化的、面向对象的、编译和解释执行的高级编程语言,它的特点是安全、稳定、可移植性强。而Spring Cloud是一个基于Spring Boot的开发工具箱,它提供了一整套微服务架构的解决方案,包括服务注册与发现、负载均衡、服务容错保护等。 在电商项目中,JavaSpring Cloud的结合可以实现以下功能: 1. 用户认证与授权:可以使用Java中的安全框架和Spring Cloud的微服务架构,实现用户登录、注册、密码加密、授权等功能。 2. 商品管理:可以使用Java的面向对象特性和Spring Cloud的分布式架构,实现商品的增删改查、库存管理、图片上传等功能。 3. 订单管理:可以使用Java的多线程处理和Spring Cloud的分布式事务管理,实现订单的创建、支付、取消等功能。 4. 评论与评分:可以使用Java中的数据库访问技术和Spring Cloud的消息队列,实现用户对商品的评论、评分等功能。 5. 支付与物流:可以使用Java的支付接口和Spring Cloud的服务调用功能,实现用户的在线支付和物流信息查询等功能。 6. 数据统计与分析:可以使用Java的数据处理和Spring Cloud的日志监控功能,实现销售数据的实时统计和分析报表的生成。 总之,使用JavaSpring Cloud开发电商项目可以充分发挥Java的稳定性和可移植性,以及Spring Cloud的微服务架构和分布式系统的优势,实现一个高效、可靠的电子商务平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值