1、添加依赖

      <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>

2、java代码

public class CreateExcel {

    static String fileName = "work1.xsl";

    /**
* 读取domain文件的属性名和类型
* @param object
* @return
*/
public static List<Map<String, String>> getDomainV(Object object){
List<Map<String, String>> result = new ArrayList<Map<String,String>> ();
Field[] fields = object.getClass().getDeclaredFields();
for(int i=0;i<fields.length;i++){
Map<String, String> map = new HashMap<String, String>();
String attributeName = fields[i].getName(); //获取属性名称
String attributeType = fields[i].getGenericType().toString(); //获取属性类型
String[] types = attributeType.split("\\.");
map.put("name", attributeName);
map.put("type", types[types.length-1]);
result.add(map);
}
return result;
} /**
* 生成表格
* @param list
* @throws IOException
*/
public static void createWorkBook(List<Map<String, String>> list,String fileName) throws IOException {
Workbook wb = new HSSFWorkbook();//创建excel工作簿
Sheet sheet = wb.createSheet("new sheet"); //创建第一个sheet(页),命名为 new sheet for(int i=0;i<list.size();i++){
Row row = sheet.createRow(i); // 创建一行,在页sheet上
Cell cell = row.createCell(0); // 在row行上创建一个方格
cell.setCellValue(list.get(i).get("name")); //设置方格的显示
cell = row.createCell(1);
cell.setCellValue(list.get(i).get("type")); //
} FileOutputStream fileOut = new FileOutputStream(fileName);
wb.write(fileOut);
fileOut.close();
} /**
* 读取Excel表格
* @param fileName
* @throws Exception
*/
public static void readWorkBook(String fileName) throws Exception {
InputStream inp = new FileInputStream(fileName); Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0); for (Row row : sheet) { //利用foreach循环 遍历sheet中的所有行
for (Cell cell : row) { //遍历row中的所有方格
System.out.print(cell.toString() + " "); //输出方格中的内容,以空格间隔
}
System.out.println(); //每一个行输出之后换行
}
inp.close(); //关闭输入流
} public static void main(String[] args) throws Exception {
Student stu = new Student();
List<Map<String, String>> list = getDomainV(stu);
createWorkBook(list,fileName);
System.out.println("creat successful!");
readWorkBook(fileName);
} }

【工具】获取pojo类属性,并写入表格的更多相关文章

  1. pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等

    pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...

  2. MVC过滤器中获取实体类属性值

    本文地址:http://www.cnblogs.com/outtamyhead/p/3616913.html,转载请保留本地址! 最近在项目遇到了这个问题:获取Action行参中实体类的属性值,主要的 ...

  3. C#获取实体类属性名和值

    遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User { public string name { get; set; } public st ...

  4. 阿里Java规范:【强制】所有的 POJO 类属性必须使用包装数据类型

    在 Java 开发手册中有这一条: 我们知道基本类型和包装类型有很多不同点: 封装类型可以调用各种方法,而基本类型没有 封装类型声明字段之后可以不设置默认值,而基本类型需要初始化默认值.比如 int ...

  5. C#获取实体类属性名称

    方法: public static string GetPropertyName(Expression<Func<SupplierInfos, string>> expr) { ...

  6. java中使用反射获取pojo(实体)类的全部字段值

    说起反射.不得不说它实在是太强大了,通过反射就能够轻轻松松拿到各种东东,假设你想在项目中解除对某个类的依赖,能够考虑用反射. 今天跟大家分享的是通过java中的反射,获取pojo类的全部字段值. 为什 ...

  7. java中使用反射获取pojo(实体)类的所有字段值

    出处:https://developer.aliyun.com/article/239346 说起反射,不得不说它实在是太强大了,通过反射就可以轻轻松松拿到各种东东,如果你想在项目中解除对某个类的依赖 ...

  8. 为什么阿里巴巴开发手册中强制要求 POJO 类使用包装类型?NPE问题防范

    封面:学校内的秋天 背景:写这个的原因,也是我这两天凑巧看到的,虽然我一直有 alibaba Java 开发手册,也看过不少次,但是一直没有注意过这个问题 属于那种看过,但又没完全看过 一起来看看吧冲 ...

  9. Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

    由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...

随机推荐

  1. 解除单个文件的与svn服务器的关联

    有些文件和个人开发环境有关不需要和svn服务器做同步,可以取消其和svn服务的关联. 右键选中要取消关联的文件,右键菜单 Tortoise SVN  --->   unversion and a ...

  2. R爬虫实战1(学习)—基于RVEST包

    这里用Hadley Wickham开发的rvest包.再次给这位矜矜业业开发各种好用的R包的大神奉上膝盖. 查阅资料如下: rvest的github rvest自身的帮助文档 rvest + CSS ...

  3. 20155307 2016-2017-2 《Java程序设计》第七周学习总结

    学号 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 认识Lambda语法,方法参考在重用现有API上扮演了重要角色,重用现有方法操作,可避免到处写下Lamb ...

  4. hdu 1253 胜利大逃亡 (广搜)

    题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...

  5. 2017 ACM暑期多校联合训练 - Team 9 1008 HDU 6168 Numbers (模拟)

    题目链接 Problem Description zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk gen ...

  6. python练习-Socket实现远程cmd命令

    需求:基于tcp的套接字实现远程执行命令的操作 代码示例: # 编辑者:闫龙 #Client端部分 import socket #导入骚凯特模块 CmdObj = socket.socket(sock ...

  7. CentOS Linux 7 安装教程

    建立新的虚拟机 将CentOS 7 ISO文件插入到CD-Rom 启动虚拟机,F12选择启动方式为CD/DVD 选择Install CentOS Linux 7 加载安装必要文件 选择安装过程所显示的 ...

  8. 【总结】前端框架:react还是vue?

    之前写了一篇前端框架的大汇总,主要介绍了当下主流的框架和其特性.最近除了bootstrap,就属react和vue最为热门,这篇就主要拿这两个框架来做一下详细对比. 究竟如何正确使用?作为小白的我们从 ...

  9. prim算法记录路径

    题目链接:https://vjudge.net/contest/66965#problem/H 代码: #include<iostream> #include<string> ...

  10. sql_injection之基本get注入

    1.代码篇 <?php error_reporting(0); include("../conn.php"); if(isset($_GET['id'])){ $id=$_G ...