导表读表工具

使用方法

导表效果

导表结果
在这里插入图片描述
读表结果
在这里插入图片描述

依赖

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

导表(只支持.xsl表格文件)

1、设置表格内容

        ExcelUtil excelUtil = new ExcelUtil();

        //第一行内容
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.set(0,""+i);
        }
        excelUtil.setWork(list);

        //第二行内容
        ArrayList<String> list2 = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.set(0,""+i);
        }

        //第三行内容
        ArrayList<String> list3 = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.set(0,""+i);
        }

2、第二步导表

        //"E/:uplod" 表示生成表格放的位置
        //path:放入的位置
        String path = excelUtil.createWork("E/:uplod");

读表(只支持.xsl表格文件)

//new File("E:/uplod/1.xsl") 表示excel表格的文件对象
//list1.get(0)  表示表格第一行内容
//list1.get(1)  表示表格第二行内容
List<List<String>> list1 = excelUtil.readWork(new File("E:/uplod/1.xsl"));

代码源码

package com.kgc.community.utils;

import com.kgc.community.pojo.User;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author Mr.Man
 * @Date 2020-11-25 23:59
 * Excel表格的读取与创建
 *
 * 第一步 传入数据  使用方法 setWork
 *
 * 第二步(导表)
 **/
public class ExcelUtil {
    public static List<List<String>> cells = new ArrayList<>();

    /**
     * 工作簿对象
     */
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook();

    /**
     * 工作表对象
     */
    HSSFSheet hssfSheet = hssfWorkbook.createSheet();


//    public void test(){
//        ArrayList<String> list = new ArrayList<>();
//        list.set(0,"姓名");
//        list.set(1,"姓名");
//        list.set(2,"姓名");
//        list.set(3,"姓名");
//        list.set(4,"姓名");
//        list.set(5,"姓名");
//
//        cells.set(0,list);
//
//        ArrayList<String> list1 = new ArrayList<>();
//        User user = new User();
//        list1.set(1,user.getCardId());
//
//        list1.set(1,user.getName());
//
//        createWork("/path");
//    }

    /**
     * 设置第i行的内容
     * 例如 i=0 list={"姓名“,”年龄“,”日期“,”性别“}
     *
     * 第一行的长度  后面都不能超过 否者报空
     *
     * 在表格中显示为:
     * 第一行 姓名 年龄  日期    性别
     * 例如 i=1 list={“man”,“12”,“2020-11”,“男”}
     * 第二行 man  12  2020-11  男
     *
     *
     * @param
     * @param list 行的值
     * @return 返回值为1时设置成功 为null时测试失败
     */
    public Integer setWork(List list){
        try {
            cells.add(list);
            if(cells.get(0).size()>=list.size()){
                return 1;
            }else {
                boolean remove = cells.remove(list);
                return null;
            }

        }catch (Exception e){
            return null;
        }
    }


    /**
     * 开始创建
     * @param path
     * @return
     */
    public String createWork(String path){
        try {
            String xlsPath =path +"test.xls";
            File file = new File(path);
            System.out.println(xlsPath);
            System.out.println(file.getName());
            file.mkdirs();
            File file1 = new File(file, "test.xls");
            boolean newFile = file1.createNewFile();
            System.out.println(newFile);
            hssfWorkbook.setSheetName(0,"sheet01");
            for (int i = 0; i < cells.size(); i++) {
                HSSFRow row = hssfSheet.createRow((short)i);
                //一行的数据
                for (int j = 0; j < cells.get(0).size(); j++) {
                    //设置单元格内容
                    HSSFCell cell = row.createCell((short)j);
                    cell.setCellValue(cells.get(i).get(j));
                }
            }
            FileOutputStream fout = new FileOutputStream(file1);
            hssfWorkbook.write(fout);
            fout.flush();
            fout.close();
            System.out.println("文件生成");
            return xlsPath;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }finally {
            for (int i = 0; i < cells.size(); i++) {
                cells.remove(i);
            }
        }
    }


    /**
     * 只读取第一个工作表,  hssfWorkbook.getSheetAt(0); 这行代码规定了获取的工作表
     * 读取excel表格
     * @param file 表格的对象  只能为xsl格式
     * @return
     */
    public List<List<String>> readWork(File file){
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
            HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0);




            int lastRowNum = sheetAt.getLastRowNum();
            System.out.println(lastRowNum+"行数");

            List<List<String>> list = new ArrayList<>();

            for (int i = 0; i <= lastRowNum; i++) {
                HSSFRow row = sheetAt.getRow(i);

                List<String> li = new ArrayList<>();

                short lastCellNum = row.getLastCellNum();
                System.out.println(lastCellNum+"行数");
                for (int j = 0; j < lastCellNum; j++) {
                    row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
                    System.out.println(row.getCell(j).getStringCellValue());
                    li.add(row.getCell(j).getStringCellValue());
                }
                list.add(li);
            }
            System.out.println("读取成功");
            return list;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }finally {
            for (int i = 0; i < cells.size(); i++) {
                cells.remove(i);
            }
        }
    }


    /**
     * 读取示例: "E:\\1.xls"为excel表格的位置 全类名
     */
    @Test
    public void test01(){
        File file = new File("E:\\1.xls");
        List<List<String>> lists = readWork(file);

        System.out.println(lists.size());
        for (List<String> list : lists) {
            for (int i = 0; i < list.size(); i++) {
                System.out.print(list.get(i)+"\ta");
            }
            System.out.println("**************结束");
        }

        cells=lists;
        createWork("");
    }
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值