Java 根据固定格式的Excel生成实体类
来源:互联网 发布:linux 非法图像文件 编辑:程序博客网 时间:2024/05/21 13:58
/** * Excel文档转对象 * * @author dxm * */public class ExcelToObject {/** * 转换 * * @param file */public static void convert(File file, String savePath, String pack) {// Excel是否存在if (null == file || !file.exists()) {return;}// 创建存放路径目录File save = new File(savePath);if (!save.exists()) {save.mkdirs();}try {// Excel文件名String fileName = file.getName();// 建立输入流InputStream input = new FileInputStream(file);Workbook wb = null;// 根据文件格式(2003或者2007)来初始化if (fileName.endsWith("xlsx")) {wb = new XSSFWorkbook(input);} else {wb = (Workbook) new HSSFWorkbook(input);}// 获得第一个表单Sheet sheet = wb.getSheetAt(0);// 文件输出流FileOutputStream fos = null;// 获得第一个表单的迭代器Iterator<Row> rows = sheet.rowIterator();// 插入语句List<String> typeList = new ArrayList<String>();List<String> nameList = new ArrayList<String>();StringBuffer sb = new StringBuffer();// 包名pack = "package " + pack + ";\n\n";// 获得第一个表单的迭代器while (rows.hasNext()) {// 获得行数据Row row = rows.next();// 列0,1,2表示属性名,类型,说明Cell cell0 = row.getCell(0);Cell cell1 = row.getCell(1);Cell cell2 = row.getCell(2);String name = cell0.getStringCellValue().trim();String type = cell1.getStringCellValue().trim();String mark = cell2.getStringCellValue().trim();// 过滤空数据if (name.isEmpty()) {continue;}// 过滤说明if (name.equals("字段")) {continue;}// 新表开始int index = type.indexOf("t_");if (-1 != index) {// 写入上个类文件if (null != fos) {getSet(typeList, nameList, sb);fos.write(sb.toString().getBytes("UTF-8"));fos.close();typeList.clear();nameList.clear();sb = new StringBuffer();}// 类首字母大写type = type.substring(index + 2);String c = String.valueOf(type.charAt(0));c = c.toUpperCase();type = c + type.substring(1);// 删除旧的类文件File f = new File(savePath + "/" + type + ".java");if (f.exists()) {f.delete();}// 创建文件输出流fos = new FileOutputStream(f);// 拼接输出语句sb.append(pack);sb.append("/**\n * ");sb.append(name);sb.append("\n * \n * @author juling\n *\n */\n");sb.append("public class ");sb.append(type);// 拼接继承类if (!mark.isEmpty()) {sb.append(" extends ");sb.append(mark);sb.append(" {\n");sb.append("\tprivate static final long serialVersionUID = -1L;\n");if (mark.equals("VData")) {sb.insert(pack.length(), "import com.mohe.common.db.VData;\n\n");}} else {sb.append(" {\n");}continue;}// 拼接输出语句sb.append("\n");sb.append("\t// ");sb.append(mark);sb.append("\n");sb.append("\tpublic ");sb.append(type);sb.append(" ");sb.append(name);sb.append(";\n");// 如果为时间类型插入导入java.util.Date包if (type.equals("Date")) {sb.insert(pack.length(), "import java.util.Date;\n\n");}typeList.add(type);nameList.add(name);}// 写入最后一个类文件if (null != fos) {getSet(typeList, nameList, sb);fos.write(sb.toString().getBytes("UTF-8"));fos.close();typeList.clear();nameList.clear();sb = new StringBuffer();}} catch (IOException ex) {ex.printStackTrace();}}/** * 填充Get,Set方法 */private static void getSet(List<String> typeList, List<String> nameList, StringBuffer sb) {for (int i = 0; i < typeList.size(); i++) {// 属性类型和名称String type = typeList.get(i);String name = nameList.get(i);// GET,SET方法首字母大写String c = String.valueOf(name.charAt(0));c = c.toUpperCase();String n = c + name.substring(1);// 拼接输出语句sb.append("\n\tpublic ");sb.append(type);sb.append(" get");sb.append(n);sb.append("() {");sb.append("\n\t\treturn ");sb.append(name);sb.append(";\n\t}\n");sb.append("\n\tpublic void set");sb.append(n);sb.append("(");sb.append(type);sb.append(" ");sb.append(name);sb.append(") {");sb.append("\n\t\tthis.");sb.append(name);sb.append(" = ");sb.append(name);sb.append(";\n\t}\n");}sb.append("\n}");}public static void main(String[] args) throws InterruptedException {String app = System.getProperty("user.dir");String modelPath = app + "*";ExcelToObject.convert(new File(“*”), modelPath, "*");ObjectToMapping.convert(new File(modelPath), app + "*", "timeKey", true);}}
0 0
- Java 根据固定格式的Excel生成实体类
- Java 根据固定格式的Excel生成实体类
- java根据表生成实体类
- java 根据excel模板格式导出指定格式的excel
- php根据xml生成带格式的EXCEL
- Java根据数据库表格自动生成java实体类
- java 根据实体对象生成 增删改的SQL语句
- 根据Java实体自动生成MyBatis的ResultMap
- 用Java根据数据库表生成实体类
- 生成固定格式的date
- java生成固定格式的XML文件,用于报表
- Java根据数据库表生成实体
- Java反射机制根据实体生成SQL
- 读取excel文件数据集,生成固定格式excel文件
- java 生成excel根据jxl
- 批量根据实体类生成相关的类
- 批量根据实体类生成相关的类
- 根据库表结构自动生成java实体类(生成规范的变量及get/set方法).
- 浮点数精度丢失问题
- Android FM模块学习之四源码解析(三)
- android 微信支付功能支付返回-1问题
- Qt for iOS:真机调试环境部署
- log4j中Logger.getLogger与LogFactory.getLog的区别
- Java 根据固定格式的Excel生成实体类
- Unity物体缩放
- JSTL标签 参考手册
- Activiti学习笔记六 流程实例 任务 执行对象控制流程执行
- c++ Linux下 socket tcp&udp编程简单范例
- 百度排名下降的主要原因分析
- AlarmManager---帮助理解AIDL
- (ubuntu)下编译安装gsoap_2.8.21问题汇总
- 编译openwrt SDK错误