zoukankan      html  css  js  c++  java
  • Java-读写xlsx文件模板

    1.导依赖包

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

    2.模板

    import com.monitorjbl.xlsx.StreamingReader;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ExcelUtil {
    
        //把xlsx文件数据读到List<List<String>>
        public static List<List<String>> readXlxs(String filePath) throws FileNotFoundException {
            FileInputStream in = new FileInputStream(filePath);//根据路径建一个输入流
            Workbook wk = StreamingReader.builder()
                    .rowCacheSize(100)  //缓存到内存中的行数,默认是10
                    .bufferSize(4096)  //读取资源时,缓存到内存的字节大小,默认是1024
                    .open(in);  //打开资源,必须,可以是InputStream或者是File,注意:只能打开XLSX格式的文件
            //读取excel第一个工作簿
            Sheet sheet = wk.getSheetAt(0);
            //存放所有数据的集合
            List<List<String>> lists = new ArrayList<>();
            int idx = 0;
            String value;
            for (Row row : sheet) {//遍历所有的行
                idx=row.getRowNum();
                if(idx==0)//一般第一行是标题,人性化忽略
                    continue;
                List<String> rowList  = new ArrayList<>();//存放每一行数据的集合
                for (Cell cell : row) {//遍历每一行数据的列
                    value = cell.getStringCellValue();
                    rowList.add(value);//把每个单元格的数据一一放进每一行集合中
                }
                lists.add(rowList);//把每行数据一行一行放进整个集合中
            }
            System.out.println("读取excel表中的记录数量 "+lists.size());
            return lists;
        }
    
        //把List<List<String>>内容写到xlsx文件
        public static void writeXlxs(List<List<String>> lists){
            try{
                //新建一个workbook对象
                XSSFWorkbook wb = new XSSFWorkbook();
                //创建一个sheet表
                XSSFSheet sheet = wb.createSheet("sheet");
                //创建行
                XSSFRow row = sheet.createRow(0);
                //解析行标签
                for (int i = 0; i < lists.size(); i++) {
                    //第几行
                    row = sheet.createRow(i);
                    for (int j = 0; j < lists.get(i).size(); j++) {
                        //第几列
                        row.createCell((short) j).setCellValue(lists.get(i).get(j));
                    }
                }
                File file = new File("F:\output.xlsx");
                //输出流
                FileOutputStream fout = new FileOutputStream(file);
                //写入
                wb.write(fout);
                //关闭输出流
                fout.close();
    
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

     

  • 相关阅读:
    Windows下对函数打桩,及Linux类似技术
    WIN10重启后,在任务栏下添加快捷工具栏消失问题修复
    VS2012下std::function的BUG解决办法
    【转载】inno setup 水波纹效果,检测安装vcredist_x86.exe等
    ArchLinux下XFCE的一个问题修复:thunar加载的环境变量不正确
    Daliy Algorithm (GPLT)-- day 94
    Daliy Algorithm (greedy , hash )-- day 93
    Daliy Algorithm (tarjan, greedy, bfs )-- day 92
    Daliy Algorithm (heap,greedy , IQ )-- day 91
    Daliy Algorithm (cf , GPLT )-- day 90
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/13931894.html
Copyright © 2011-2022 走看看