Java文件转execl

Java 文件转 execl

导入依赖

    <!--数据导出jar 依赖 -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.2</version>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <!--数据导出jar 依赖 -->

编写工具类

    import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;


/**
 * list数据导出到excel表格中工具类
 * @author sheli
 *
 */
public class ExportExcel {

	/**
	 * 获取属性值
	 *
	 * @param fieldName 字段名称
	 * @param o         对象
	 * @return Object
	 */
	private static Object getFieldValueByName(String fieldName, Object o) {
		try {
			String firstLetter = fieldName.substring(0, 1).toUpperCase();
			String getter = "get" + firstLetter + fieldName.substring(1);    //获取方法名
			Method method = o.getClass().getMethod(getter, new Class[]{});  //获取方法对象
			Object value = method.invoke(o, new Object[]{});    //用invoke调用此对象的get字段方法
			return value;  //返回值
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 将list集合转成Excel文件
	 * @param list  对象集合
	 * @param path  输出路径
	 * @return   返回文件路径
	 */
	/**
	 * 将list集合转成Excel文件
	 * @param list  对象集合
	 * @param path  输出路径
	 * @return   返回文件路径
	 */
	public static String createExcel(List<? extends Object> list, String path){
		String result = "";
		if(list.size()==0||list==null){
			result = "没有对象信息";
		}else{
			Object o = list.get(0);
			Class<? extends Object> clazz = o.getClass();
			String className = clazz.getSimpleName();
			Field[] fields=clazz.getDeclaredFields();    //这里通过反射获取字段数组
			File folder = new File(path);
			if(!folder.exists()){
				folder.mkdirs();
			}
			String fileName =   new SimpleDateFormat("yyyy-MM-dd-mm-ss").format(new Date()).toString();;
			String name = fileName.concat(".xls");
			WritableWorkbook book = null;
			File file = null;
			try {
				file = new File(path.concat(File.separator).concat(name));
				book = Workbook.createWorkbook(file);  //创建xls文件
				WritableSheet sheet  =  book.createSheet(className,0);
				int i = 0;  //列
				int j = 0;  //行
				for(Field f:fields){
					j = 0;
					Label label = new Label(i, j,f.getName());//这里把字段名称写入excel第一行中
					sheet.addCell(label);
					j = 1;
					for(Object obj:list){
						Object temp = getFieldValueByName(f.getName(),obj);
						String strTemp = "";
						if(temp!=null){
							strTemp = temp.toString();
						}
						sheet.addCell(new Label(i,j,strTemp));  //把每个对象此字段的属性写入这一列excel中
						j++;
					}
					i++;
				}
				book.write();
				result = file.getPath();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				result = "SystemException";
				e.printStackTrace();
			}finally{
				fileName = null;
				name = null;
				folder = null;
				file = null;
				if(book!=null){
					try {
						book.close();
					} catch (WriteException e) {
						// TODO Auto-generated catch block
						result = "WriteException";
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						result = "IOException";
						e.printStackTrace();
					}
				}
			}

		}

		return result;   //最后输出文件路径
	}
}

使用 工具类生成

  String a = ExportExcel.createExcel(pageInfo.getList(), "E:\\sheli\\");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值