Java将数据生成为excel,并保存本地指定的路径.

本案例只是自己封装了一个简单的ExcelUtil,简单的创建excel表,没有任何的样式

1.需要用到的架包


在IDEA中引入的架包

架包的下载地址:

https://search.maven.org/search?q=g:org.apache.commons%20AND%20a:commons-collections4

https://search.maven.org/search?q=g:org.apache.poi%20AND%20a:poi

http://maven.outofmemory.cn/org.apache.commons/commons-math3/3.3/

2.需要封装一个excel对象方便进行传递



private Listlist;// 数据所在的集合

private String[]title;//sheet表的标题

private String[]keys;//对象的属性名,方便标题跟数据对齐

private StringSheetName;//sheet表的名称

private StringexcelName;//excel的名称

private Stringpath;//excel表格保存的路径

3.封装一个ExcelUtil类(不愿写的可拿来直接使用)


public class ExcelUtil {

public static void createExcel(Excel excel)throws IOException, IllegalAccessException {

HSSFWorkbook hssfWorkbook =new HSSFWorkbook();//创建一个工作部

        HSSFSheet hssfSheet = hssfWorkbook.createSheet(excel.getSheetName());//创建一个工作表(参数是sheet表的名称)

//创建第一行sheet表中的内容,索引是从0开始,第一行是sheet表的标题栏

        HSSFRow hssfRowHeader = hssfSheet.createRow(0);

String[] title = excel.getTitle();//标题数组

        HSSFCell cell =null;//创建单元格对象

//遍历生成标题栏里面的标题单元格

        for (int i =0; i < title.length; i++) {

cell = hssfRowHeader.createCell(i);//遍历生成索引是0行的每一个标题单元格对象

            cell.setCellValue(title[i]);//添加数据

        }

List students = excel.getList();//内容集合

        String[] keys = excel.getKeys();//属性名的数组,判断到底要在excel呈现出多少数据

//导出内容

        for (int i =0; i < students.size(); i++) {//集合的长度就是sheet表中内容的条数,比如(长度为3,内容就有三条,索引从1开始)

            HSSFRow hssfRowContext = hssfSheet.createRow(i +1);

Field[] studentArray = students.get(i).getClass().getDeclaredFields();//利用反射将对象属性变成一个数组

            for (int j =0; j < studentArray.length; j++) {

System.out.println();

studentArray[j].setAccessible(true);//这句很重要,意思是设置是否允许访问,而不是修改原来的访问权限修饰词。

                for (int k =0; k < keys.length; k++) {

if (keys[k].equals(studentArray[j].getName())) {

cell = hssfRowContext.createCell(k);

cell.setCellValue(studentArray[j].get(students.get(i)).toString());

}

}

}

}

FileOutputStream fos =new FileOutputStream(excel.getPath() +"/" + excel.getExcelName() +".xlsx");

hssfWorkbook.write(fos);

}

}

4.测试类测试


List students =new ArrayList<>();

students.add(new Student("张三",29,1,"烟台"));

students.add(new Student("王五",38,2,"威海"));

students.add(new Student("刘杰",56,3,"济南"));

Excel excel =new Excel();

excel.setList(students);

//标题数组

String[] title =new String[]{"姓名","年龄","地址"};

String[] keys =new String[]{"name","age","address"};

excel.setTitle(title);

excel.setKeys(keys);

excel.setExcelName("学生管理系统导出表");

excel.setSheetName("学生信息表");

excel.setPath("C:\\Users\\swj\\Desktop\\java学习资料");

ExcelUtil.createExcel(excel);

5.导出效果



你可能感兴趣的:(Java将数据生成为excel,并保存本地指定的路径.)