zoukankan      html  css  js  c++  java
  • POI向Excel中写入数据及追加数据

    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class WriteExcel {
    
        /**
         * 向Excel中写入数据
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
    
            List<Student> stuList = new ArrayList<Student>();
            stuList.add(new Student(12,"lili","深圳南山"));
            stuList.add(new Student(13,"liming","深圳宝安"));
            stuList.add(new Student(14,"chengming","深圳罗湖"));
    
            String filePath = "E:\ExcelData.xlsx";
            boolean flag = fileExist(filePath);
            if (flag){
                writeExcel(stuList,filePath);
            }else {
                File file = new File(filePath);
                writeExcel(stuList,filePath);
            }
        }
    
        //判断文件是否存在
        public static boolean fileExist(String filePath){
            boolean flag = false;
            File file = new File(filePath);
            flag = file.exists();
            return flag;
        }
    
        //向Excel中写数据
        public static void writeExcel(List<Student> list ,String filePath){
            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet("student");
            XSSFRow firstRow = sheet.createRow(0);//第一行表头
            XSSFCell cells[] = new XSSFCell[3];
    
            String[] titles = new String[]{"age","name","address"};
            //循环设置表头信息
            for (int i=0;i<3;i++){
                cells[0]=firstRow.createCell(i);
                cells[0].setCellValue(titles[i]);
            }
    
            //遍历list,将数据写入Excel中
            for (int i=0;i<list.size();i++){
                XSSFRow row = sheet.createRow(i+1);
                Student student = list.get(i);
                XSSFCell cell = row.createCell(0); //第一列
                cell.setCellValue(student.getAge());
                cell=row.createCell(1); //第二列
                cell.setCellValue(student.getName());
                cell=row.createCell(2); //第三列
                cell.setCellValue(student.getAddress());
            }
            OutputStream out = null;
            try {
                out = new FileOutputStream(filePath);
                workbook.write(out);
                out.close();
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    效果:

    二、向Excel中追加数据

    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    public class AddExcel {
    
        /**
         * 向Excel中追加内容
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception{
    
            List<Student> stuList2 = new ArrayList<Student>();
            stuList2.add(new Student(15,"小明","深圳南山"));
            stuList2.add(new Student(16,"小王","深圳宝安"));
            stuList2.add(new Student(17,"小张","深圳罗湖"));
    
            FileInputStream in = new FileInputStream("E:\ExcelData.xlsx");
            XSSFWorkbook workbook = new XSSFWorkbook(in);
            XSSFSheet sheet = workbook.getSheetAt(0);
            XSSFRow row=sheet.getRow(1);
    
            FileOutputStream out = new FileOutputStream("E:\ExcelData.xlsx");
            //从第二行开始追加列
            /*row=sheet.getRow(1);
            row.createCell(3).setCellValue("AAA");
            row.createCell(4).setCellValue("BBB");*/
    
            //追加列数据
            for(int i=0;i<stuList2.size();i++){
                Student student = stuList2.get(i);
                row = sheet.getRow(i+1);
                row.createCell(3).setCellValue(student.getAge());
                row.createCell(4).setCellValue(student.getName());
                row.createCell(5).setCellValue(student.getAddress());
            }
    
            /*//追加行数据
            row=sheet.createRow((short)(sheet.getLastRowNum()+1)); //在现有行号后追加数据
            row.createCell(0).setCellValue("测试数据"); //设置第一个(从0开始)单元格的数据
            row.createCell(1).setCellValue("haha"); //设置第二个(从0开始)单元格的数据*/
    
            try {
                out.flush();
                workbook.write(out);
                out.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

     效果:

  • 相关阅读:
    Java事务
    Mybatis二级缓存问题
    183.面试题 17.14. 最小K个数(快速排序)
    182. 跟着三叶学最短路径问题(存图方式)
    181. 差分数组学习
    AI大视觉(二十) | 小目标检测的tricks汇总
    CentOS7 上安装 mysql-5.7.26
    如何欺骗 Go Mod?
    .netcore docker常用命令-持续补充
    转载:登录后,用户配置被修改的处理方法
  • 原文地址:https://www.cnblogs.com/wakey/p/11335248.html
Copyright © 2011-2022 走看看