最菜的Java导入excel

简介: poi Maven org.apache.poi poi 3.14 org.

poi Maven

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.14</version>
        </dependency>

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

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

基础代码

package com.peas.mdp.module.util;

import com.peas.mdp.dto.Teacher;
import org.apache.poi.ss.usermodel.*;

import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

public class ExcelUtil {

    public static List<?> getBankListByExcel(InputStream in) throws Exception {

        List<Teacher> list = new ArrayList<>();
        //创建Excel工作薄
        Workbook work = getWorkbook(in);
        if (null == work) {
            throw new Exception("创建Excel工作薄为空!");
        }
        Sheet sheet = null;
        Row row = null;
        Cell cell = null;

        //遍历Excel中所有的sheet
        for (int i = 0; i < work.getNumberOfSheets(); i++) {
            sheet = work.getSheetAt(i);
            if (sheet == null) {
                continue;
            }

            //遍历当前sheet中的所有行
            for (int j =1; j <= sheet.getLastRowNum(); j++) {
                row = sheet.getRow(j);
                if (row == null ) {
                    continue;
                }

                Teacher teacher = new Teacher();

                //把每个单元格的值付给对象的对应属性
                if (row.getCell(0)!=null){
                    teacher.setAccount(String.valueOf(getCellValue(row.getCell(0))));
                }
                if (row.getCell(1)!=null){
                    teacher.setName(String.valueOf(getCellValue(row.getCell(1))));
                }
                if (row.getCell(2)!=null){
                    teacher.setSex(Integer.valueOf((String) getCellValue(row.getCell(2))));
                }
                if (row.getCell(3)!=null){
                    teacher.setAge(Integer.valueOf((String) getCellValue(row.getCell(3))));
                }
                if (row.getCell(4)!=null){
                    teacher.setEducation(String.valueOf(getCellValue(row.getCell(4))));
                }
                if (row.getCell(5)!=null){
                    teacher.setJobTitle(String.valueOf(getCellValue(row.getCell(5))));
                }
                if (row.getCell(6)!=null){
                    teacher.setPosition(String.valueOf(getCellValue(row.getCell(6))));
                }
                if (row.getCell(7) != null) {
                    teacher.setRole(String.valueOf(getCellValue(row.getCell(7))));
                }
                if (row.getCell(8) != null) {
                    teacher.setPhone(String.valueOf(getCellValue(row.getCell(8))));
                }
                if (row.getCell(9) != null) {
                    teacher.setEmail(String.valueOf(getCellValue(row.getCell(9))));
                }
                if (row.getCell(10) != null) {
                    teacher.setKeyWords(String.valueOf(getCellValue(row.getCell(10))));
                }
                if (row.getCell(11) != null) {
                    teacher.setIntroduction(String.valueOf(getCellValue(row.getCell(11))));
                }
                if (row.getCell(12) != null) {
                    teacher.setIdCard(String.valueOf(getCellValue(row.getCell(12))));
                }
                if (row.getCell(13) != null) {
                    teacher.setType(Integer.valueOf((String)getCellValue(row.getCell(13))));
                }

                //遍历所有的列(把每一行的内容存放到对象中)
                list.add(teacher);
            }
        }

        return list;
    }


    /**
     *
     * @param inStr
     * @return
     * @throws Exception
     */
    public static Workbook getWorkbook(InputStream inStr) throws Exception {
        Workbook wb = null;
        wb = WorkbookFactory.create(inStr);
        return wb;
    }

    /**
     * 描述:对表格中数值进行格式化
     *
     * @param cell
     * @return
     */
    public static Object getCellValue(Cell cell) {
        Object value = null;
        DecimalFormat df = new DecimalFormat("0");  //格式化number String字符
        SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");  //日期格式化
        DecimalFormat df2 = new DecimalFormat("0");  //格式化数字

        switch (cell.getCellType()) {
            case Cell.CELL_TYPE_STRING:
                value = cell.getRichStringCellValue().getString();
                break;
            case Cell.CELL_TYPE_NUMERIC:
                if ("General".equals(cell.getCellStyle().getDataFormatString())) {
                    value = df.format(cell.getNumericCellValue());
                } else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) {
                    value = sdf.format(cell.getDateCellValue());
                } else {
                    value = df2.format(cell.getNumericCellValue());
                }
                break;
            case Cell.CELL_TYPE_BOOLEAN:
                value = cell.getBooleanCellValue();
                break;
            case Cell.CELL_TYPE_BLANK:
                value = "";
                break;
            default:
                break;
        }
        return value;
    }


}

Control

@ApiOperation("excel导入")
    @GET
    @Path("excelFile")
    public Map<String, String> readExcel(@QueryParam("path") File path) throws Exception {

        HashMap<String, String> map = new HashMap<>();
        //读取excel中的内容
        InputStream inputStream = new FileInputStream(path);
        List<Teacher> teachers = (List<Teacher>) ExcelUtil.getBankListByExcel(inputStream);
        for (Teacher teacher : teachers) {
            teacherService.saveOrUpdate(teacher);
        }
        return map;

    }
 /**
     * 读取excel更新数据
     *
     * @param upfile
     * @param
     * @param
     * @throws Exception
     */
/*    
    @RequestMapping(value = "/readExcel")
    @Transactional
    public Map<String, String> readExcel(MultipartFile upfile) throws Exception {

        HashMap<String, String> map = new HashMap<>();

        InputStream in = upfile.getInputStream();
        //读取excel中的内容
        List<LineDownOrder> lineDownOrders = ExcelUtils.getBankListByExcel(in);
        String s = orderService.updateByExcel(lineDownOrders);
        map.put("status", s);
        return map;

    }
*/
相关文章
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
142 5
|
1天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
33 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
5天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
2月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
32 1
|
2月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
72 6
|
6月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
2月前
|
Java API Apache
|
2月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
78 4
|
4月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
4月前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
64 2