博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poi 使用反射技术导出Excel表格 替换第二版
阅读量:4179 次
发布时间:2019-05-26

本文共 2880 字,大约阅读时间需要 9 分钟。

话不多说 上java代码

@SpringBootTest(classes = {ShujiegouApplication.class})@RunWith(SpringJUnit4ClassRunner.class)public class PoiTestDataBaseNoTwo {    @Autowired    private SysColumnService sysColumnService;    @Test    public void test1() throws Exception{        /**         * 获取数据库中的数据 填充在Excel表格中         * @throws Exception         *///        准备数据            List
titles = Arrays.asList("栏目Id","栏目名称","栏目父id值","菜单级别","跳转页面");// 数据查询 上师全部的数据 List
sysColumnAll = sysColumnService.getSysColumnAll();// List
sysColumnAll = sysColumnMapper.selectAll();// 1. 新建一个HSSFWorkbook 对象 HSSFWorkbook workbook = new HSSFWorkbook();// 单元格样式对象 设置样式 HSSFCellStyle cellStyle = workbook.createCellStyle(); HSSFFont font = workbook.createFont(); font.setColor((short)10); font.setFontName("宋体"); cellStyle.setFont(font);// 2. 新建一个HSSFSheet对象 HSSFSheet sheet = workbook.createSheet("guru");// 3. 写入标题栏数据// 创建行 HSSFRow titleRow = sheet.createRow(0); for (int i = 0; i < titles.size(); i++) {// 创建单元格 HSSFCell titleCell = titleRow.createCell(i);// 添加样式 titleCell.setCellStyle(cellStyle);// 写入数据 titleCell.setCellValue(titles.get(i)); }// 4. 写入上师数据 for (int i = 0; i < sysColumnAll.size(); i++) { SysColumn sysColumn = sysColumnAll.get(i);// 创建行 HSSFRow row = sheet.createRow(i + 1);// 创建单元格// 反射开始 Class
sysColumnClass = sysColumn.getClass();// 10.2 获取属性数组 Field[] declaredFields = sysColumnClass.getDeclaredFields();// 10.3遍历数组 for (int j = 0; j < declaredFields.length; j++) {// 10.4 获取属性名 String guruField = declaredFields[j].getName();// 10.5 拼接出来get方法名 String guruGetMethod = "get"+guruField.substring(0,1).toUpperCase()+guruField.substring(1);// 10.6 调用get方法获取返回值 Object invoke = sysColumnClass.getDeclaredMethod(guruGetMethod, null).invoke(sysColumn, null);// 10.7创建单元格 HSSFCell cell = row.createCell(j);// 10.8把返回值写入单元格中// 根据实际业务需求酌情添加 类型判断// if(invoke instanceof Date){// 根据实际业务需求酌情添加 类型判断// } cell.setCellValue(invoke.toString()); } }// 5. 输出 workbook.write(new FileOutputStream(new File("E://gurua.xls"))); } }

效果图在这里插入图片描述

这里讲一下为什么要使用反射。

因为在导出的时候,如果不使用反射,如果你的类里有100个属性,那么你需要调用100次set方法进行给单元格赋值。
所以说为了方便,需要使用反射的技术。

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!

欢迎加入技术群聊!

在这里插入图片描述

转载地址:http://gzoai.baihongyu.com/

你可能感兴趣的文章
TextView实现自动上下滚动的效果(TextSwitcher)
查看>>
Android矩阵变换讲解Matrix
查看>>
Android补间动画(Animation)是如何运行的
查看>>
Android属性动画(Animator)是如何实现的
查看>>
自动维护一个Activity栈管理
查看>>
Android Application的高级用法及源码分析
查看>>
从源码理解Android Activity,Window和View的关系
查看>>
AndroidVideoCache简单使用及源码分析
查看>>
ListView缓存源码分析
查看>>
Android邮件发送实现
查看>>
Android生成pdf文件之PdfDocument及踩过的坑
查看>>
Android使用Itext生成pdf文件
查看>>
android WebView使用详解及各种设置说明
查看>>
CountDownLatch和CyclicBarrier的使用和区别
查看>>
数据加密之异或加密算法
查看>>
SharedPreferences源码解析
查看>>
android之Gradle构建项目流程
查看>>
android之Gradle常见使用
查看>>
android之gradle版本差异化打包
查看>>
AlertDialog实现原理
查看>>