package com.excel.test;

import java.util.List;

public class createUtil {

	public static String appendPrivate(List<String> types,List<String> attributes,List<String> mark){
StringBuffer sb = new StringBuffer();
if(types.size()==attributes.size()&&types.size()==mark.size()){
for(int i=0;i<types.size();i++){
sb.append(" /**\n");
sb.append(" *"+mark.get(i)+"\n");
sb.append(" */\n");
sb.append(" private "+types.get(i)+" "+attributes.get(i)+";\n\n");
}
}
return sb.toString();
}
public static String getSet(List<String> types,List<String> attributes,List<String> mark){
StringBuffer sb = new StringBuffer();
if(types.size()==attributes.size()){
for(int i=0;i<types.size();i++){
String attribute = attributes.get(i);
String c = String.valueOf(attribute.charAt(0));
c = c.toUpperCase();
attribute = c + attribute.substring(1);
sb.append(" /**\n");
sb.append(" * 设置"+mark.get(i)+"\n");
sb.append(" * @param "+attributes.get(i)+" "+mark.get(i)+"\n");
sb.append(" */\n");
sb.append(" public void set"+attribute+"("+types.get(i)+" "+attributes.get(i)+"){\n");
sb.append(" this."+attributes.get(i)+" = "+attributes.get(i)+";\n");
sb.append(" }\n\n");
sb.append(" /**\n");
sb.append(" *获得"+mark.get(i)+"\n");
sb.append(" * @return "+attributes.get(i)+" "+mark.get(i)+"\n");
sb.append(" */\n");
sb.append(" public "+types.get(i)+" get"+attribute+"(){\n");
sb.append(" return "+attributes.get(i)+";\n");
sb.append(" }\n\n");
}
} return sb.toString();
}
}

  

package com.excel.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel3 { public static void main(String[] args) throws IOException, InvalidFormatException {
// TODO Auto-generated method stub File file = new File("D:\\user.xlsx");
String fileName = file.getName();
String className = "demo";
File file1 = null;
FileOutputStream fop = null;
List<String> types = new ArrayList<String>();
List<String> attributes = new ArrayList<String>();
List<String> marks = new ArrayList<String>();
if (fileName.endsWith("xlsx")){
XSSFWorkbook workbooks = new XSSFWorkbook(file);
XSSFSheet xssfSheet = workbooks.getSheetAt(0);
int totalRows = xssfSheet.getPhysicalNumberOfRows();
XSSFRow row = xssfSheet.getRow(0);
className = row.getCell(0).getStringCellValue();
System.out.println(className+"total:"+totalRows);
for(int i=2;i<totalRows;i++){
XSSFRow row2 = xssfSheet.getRow(i);
attributes.add(row2.getCell(0).getStringCellValue());
types.add(row2.getCell(1).getStringCellValue());
marks.add(row2.getCell(2).getStringCellValue());
}
}else {
HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
//读取默认第一个工作表sheet
HSSFSheet sheet = workbook.getSheetAt(0);
int firstRowNum = 0;
//获取sheet中最后一行行号
int lastRowNum = sheet.getLastRowNum();
HSSFRow row = sheet.getRow(firstRowNum);
className = row.getCell(0).getStringCellValue();
for (int i = 2; i <=lastRowNum; i++){
HSSFRow row1 = sheet.getRow(i);
attributes.add(row1.getCell(0).getStringCellValue());
types.add(row1.getCell(1).getStringCellValue());
marks.add(row1.getCell(2).getStringCellValue());
}
} StringBuffer sb = new StringBuffer(); sb.append("public class "+className+"{\n\n");
sb.append(createUtil.appendPrivate(types, attributes,marks));
sb.append(createUtil.getSet(types, attributes,marks));
sb.append("}"); file1 = new File("d:/"+className+".java");
fop = new FileOutputStream(file1);
if (!file1.exists()) {
file1.createNewFile();
}
byte[] contentInBytes = sb.toString().getBytes(); fop.write(contentInBytes);
fop.flush();
fop.close(); System.out.println("Done");
} }

将Excel生成实体类的更多相关文章

  1. 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法

    由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...

  2. NHibernate生成实体类、xml映射文件

    最近工作电脑装完win10后,之前使用的codeSmith安装不了,索性自己写一个. 界面比较简单,如下图: 第一行为Oracle数据库的连接字符串.连接成功后,填充表到第4行的下拉列表中. 第二行为 ...

  3. (转)使用myeclipse生成实体类和hibernate映射文件

    转至:http://blog.sina.com.cn/s/blog_9658bdb40100uiod.html 1.下载并安装myeclipse,如果已经安装,则忽略该步骤; 2.打开myeclips ...

  4. MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程

    前文: hibernate带给我们的O/RMapping思想是很正确的,即从面相对象的角度来设计工程中的实体对象,建立pojo,然后在编写hbm.xml映射文件来生成数据表.但是在实际开发中,往往我们 ...

  5. .net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

    在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要 ...

  6. T4模板根据DB生成实体类

    1.前言 为什么会有这篇文章了,最近看到了一些框架,里面要写的代码太多了,故此就想偷懒,要是能写出一个T4模板,在数据库添加表后,根据模板就可以自动生成了类文件了,这样多好,心动不如行动.记得使用T4 ...

  7. 使用T4为数据库自动生成实体类

    T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...

  8. T4模板_根据DB生成实体类

    为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ tem ...

  9. MyEclipse数据库反向生成实体类

    MyEclipse数据库反向生成实体类 “计应134(实验班) 凌豪” 当我们在开发项目涉及到的表太多时,一个一个的写JAVA实体类很是费事.然而强大的MyEclipse为我们提供简便的方法:数据库反 ...

随机推荐

  1. 关于Tcp,为什么一定要进行三次握手呢?

    主要是防止已经失效的请求报文段突然又传送到了服务端而产生的连接的误判. 考虑如下的情况:客户端发送了一个连接请求报文段到服务端,但是在某些网络节点上长时间滞留了,而后客户端又超时重发了一个连接请求报文 ...

  2. WP8.1 Study5:Data binding数据绑定

    一.数据绑定 最简单的编程UI控件的方法是写自己的数据来获取和设置控件的属性,e.g. , textBox1.Text = "Hello, world"; 但在复杂的应用程序,这样 ...

  3. 通过代码自定义cell 新浪微博页面显示

    通过代码自定义cell(cell的高度不一致)(如果高度一致的cell 用xib实现) 1.新建一个集成自UItableVIewCell的类 2.重写initWithStle :方法 - (insta ...

  4. Hibernate4 No Session found for current thread原因

    Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for curre ...

  5. 配置Java环境-20160613

    http://jingyan.baidu.com/article/870c6fc33e62bcb03fe4be90.html   1.安装JDK,参照目录   在D:\Program Files\ec ...

  6. iOS 端的 UI 聊天组件ChatKit及代码实现

    ChatKit 是一个免费且开源的 UI 聊天组件,自带云服务器,自带推送,支持消息漫游,消息永久存储.底层聊天服务基于LeanCloud(原名 AVOS ) 的 IM 实时通信服务「LeanMess ...

  7. 2013年8月份第2周51Aspx源码发布详情

    上班族网站(毕设)源码  2013-8-16 [VS2010]源码描述:自己做的毕业设计,上班族网站项目是专门针对上班族群体设计和开发的网站项目.该网站主要涵盖了论坛平台,笑话模块,名言模块,资讯模块 ...

  8. python global vs nonlocal (2)

    上一篇中简述了这两个关键字的基本用法: global用于在局部作用于修改或重定义全局变量 nonlocal用于在内部作用域修改或重定义外部变量(全局变量除外) 这只是很浅的理解方式 注意python的 ...

  9. SQL2008:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

    错误: 解决方案: 1.查看服务是否开启,如果没有开启,请开启服务. 2.服务器名称栏:格式:主机名\实例名或者ip\实例名 如:10.10.4.81\SQLSERVER

  10. C# 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配

    在dllimport中加入CallingConvention参数就行了,[DllImport(PCAP_DLL, CharSet = CharSet.Auto, CallingConvention = ...