杨校老师课堂之POI导入数据

简介: 杨校老师课堂之POI导入数据
  1. 导入坐标
  <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

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

2.编码

package com.example.springbootmybatis;

import com.example.springbootmybatis.entity.Book;
import com.example.springbootmybatis.entity.User;
import com.example.springbootmybatis.service.BookService;
import com.example.springbootmybatis.service.UserService;
import org.apache.poi.ss.usermodel.*;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringbootMybatisApplicationTests {

    @Resource
    private BookService bookService;
    // 实例化集合,用于存储读取的excel数据
    List<Book> bookList = new ArrayList<>();

    @Test
    public void contextLoads() throws IOException {
        //  1. 手写创建 File  ||  稍后记得导入  commons-io 、commons-fileupload
        File file = new File("C:\\Users\\Mryang\\Desktop\\book.xlsx");
        //  2.创建工作簿
        Workbook workbook = WorkbookFactory.create(file);

        int sheets = workbook.getNumberOfSheets();

        System.out.println("该文件有"+sheets+"表");

        Sheet sheet = workbook.getSheetAt(0);

        System.out.println(sheet.getSheetName());

        int rows = sheet.getPhysicalNumberOfRows();//getPhysicalNumberOfRows 获取所有行数
        System.out.println("行数是" + rows);

        //  循环所有的行数
        for (int j = 0; j < rows; j++) {

            // 判断是不是第一行标题 是不是表头?
            if (sheet.getFirstRowNum() == j){
                //  第一行不要了
                continue;
            }
            Row row = sheet.getRow(j);
            int cells = row.getPhysicalNumberOfCells();//getPhysicalNumberOfCells 获取所有列数

            Book book = new Book();// 创建10个呀

            for (int i = 0; i < cells; i++) {
                switch (i){
                    case 0 ://第1列
                        row.getCell(i).setCellType(CellType.STRING);//  设置单元格的类型字符串类型
                        int bookId  = Integer.parseInt(row.getCell(i).getStringCellValue());//转换为整数
                        book.setBookId(bookId);
                        break;
                    case 1 ://第2列
                        row.getCell(i).setCellType(CellType.STRING);
                        book.setBookName(row.getCell(i).getStringCellValue());
                        break;
                    case 2 ://第3列
                        row.getCell(i).setCellType(CellType.STRING);
                        book.setBookPrice(Double.parseDouble(row.getCell(i).getStringCellValue()));
                        break;
                    case 3 ://第4列
                        row.getCell(i).setCellType(CellType.STRING);
                        book.setBookPublish(row.getCell(i).getStringCellValue());
                        break;
                }
            }
            bookList.add(book);
        }
        //System.out.println("bookList = " + bookList);//检验是否将配置文件内的书信息存储到集合中

        for (Book book : bookList) {
          //System.out.println(book);
            bookService.addBook(book);
          
        }
    }
}
目录
相关文章
|
2月前
|
人工智能 监控 数据可视化
什么是低代码开发平台?2025年最热门的10大低代码开发平台盘点!
低代码开发平台通过可视化拖拽、模型驱动等方式,大幅减少手工编码,提升应用开发效率。当下更是结合AI能力,自动生成应用,组件,图表,进一步加快应用软件的开发效率落地。
|
数据安全/隐私保护 Docker 容器
厉害了,如何搭建一套自己的私有网盘?
本文教大家用docker搭建一款自己的私有网盘,教程给大家分享一下。 开源云盘选择 搭建前我仔细看了一下各个开源私有云盘的实现,有以下几种:
607 0
厉害了,如何搭建一套自己的私有网盘?
|
3月前
|
机器学习/深度学习 算法 BI
汽车雷达系统的干扰缓解:现状调查与未来趋势——论文阅读
本文系统综述了汽车雷达干扰缓解技术的最新进展,提出基于物理域避免、主动避免、反应式信号重建和被动调制技术的四类划分方法,深入分析各类策略的原理、优劣及实施挑战,并强调跨学科合作与监管协同对未来发展的关键作用。
324 4
汽车雷达系统的干扰缓解:现状调查与未来趋势——论文阅读
|
编解码 监控 API
直播源怎么调用api接口
调用直播源的API接口涉及开通服务、添加域名、获取API密钥、调用API接口、生成推流和拉流地址、配置直播源、开始直播、监控管理及停止直播等步骤。不同云服务平台的具体操作略有差异,但整体流程简单易懂。
|
11月前
|
数据采集 搜索推荐 数据挖掘
通过CRM系统洞察客户喜好,实现精准客户培育
在竞争激烈的市场中,企业需通过精准培育提升客户忠诚度和价值。CRM系统助力企业在客户生命周期各阶段进行精准培育,提高满意度与忠诚度,实现长期业务增长。本文探讨如何利用CRM洞察客户喜好,涵盖策略制定、实施步骤及案例分析。通过数据收集整合、客户细分画像、个性化沟通互动、内容营销教育及忠诚度计划等手段,企业能更好地理解客户需求,制定个性化培育策略,最终实现客户价值最大化。
|
容器
Flutter下拉刷新上拉加载的简单实现方式一
Flutter下拉刷新上拉加载的简单实现方式一
404 2
|
数据采集 存储 人工智能
《文档智能 & RAG让AI大模型更懂业务解决方案评测》
本文介绍了通过文档智能和RAG技术将业务文档整合到大语言模型(LLM)知识库中的实践原理,涵盖了理解情况、技术细节、部署体验、知识库优势及适用场景。重点讨论了文档解析、信息提取、语义理解等步骤,以及RAG技术在LLM中的应用。同时,提出了在技术细节、部署引导、知识库更新和性能优化等方面的改进建议,强调了该方案在企业内部知识管理、客户服务和业务流程自动化中的适用性,但也指出了在安全性、系统集成和性能稳定性方面的不足。
291 0
|
存储 人工智能 JSON
基于函数计算FC一键部署ComfyUI绘画平台体验
【8月更文挑战第11天】基于函数计算FC一键部署ComfyUI绘画平台体验
381 1
|
运维 监控 API
深入了解微服务架构:优势与挑战
【10月更文挑战第7天】深入了解微服务架构:优势与挑战