POI向Excel中写入数据及追加数据
Posted wakey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
效果:
以上是关于POI向Excel中写入数据及追加数据的主要内容,如果未能解决你的问题,请参考以下文章
java大概1000W数据导出成excel有啥好的建议。(最好是插件,POI、JXL、FastExcel已试过,数据量太大,不