Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,在这篇博客中将为大家介绍其中一种方法:jxl
因为在网上找过很多帖子都写得比较复杂,要不就过于简单,没有需要的功能,此处贴出两个小时整理出来的Java程序员所需的基本保存功能。(后续可能会更新读取的方法)
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;/**
* 根据方法提示可直接保存数据到excel
* @author Sam
*/
public class ExcelUtil {
public static List<String> titles = new ArrayList<String>();/**
* @param objects 数据集合的集合,按照内层横外层竖的规则传入
* @param sheetName 工作簿的名字
* @param path 文件路径,包含文件名
*/
public static void exportExcel(List<List<Object>> objects, String sheetName, String path) {
// 创建一个工作簿
WritableWorkbook workbook = null;
Long startTime = System.currentTimeMillis();
System.out.println("开始保存文件" + path);
try {
File xlsFile = new File(path);
workbook = Workbook.createWorkbook(xlsFile);// 创建一个工作表
WritableSheet sheet = workbook.createSheet(sheetName, 0);
int title = 0;
if (titles.size() > 0) {
title = 1;
for (int i = 0; i < titles.size(); i++) {
String string = titles.get(i);
sheet.addCell(new Label(i, 0, string));
}
}
for (int row = 0; row < objects.size(); row++) {
List<Object> temp = objects.get(row);
for (int col = 0; col < temp.size(); col++) {
// 向工作表中添加数据
sheet.addCell(new Label(col, row + title, temp.get(col).toString()));
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
workbook.write();
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("目录为" + path + "的文件已保存完毕");
System.out.println("共计耗时:" + (System.currentTimeMillis() - startTime) / 1000.0 + "秒");
}}
/**
* @see 工作簿名默认为sheet1
* @param objects 数据集合的集合,按照内层横外层竖的规则传入
* @param path 文件路径,包含文件名
*/
public static void exportExcel(List<List<Object>> objects, String path) {
exportExcel(objects, "sheet1", path);
}/**
* @param objects 直接传入对象集合
* @param path 文件路径,包含文件名
*/
public static void exportExcel(String path, List<?> objects) throws Exception {
List<List<Object>> cells = new ArrayList<List<Object>>();
for (int row = 0; row < objects.size(); row++) {
Object temp = objects.get(row);
Class<?> clazz = temp.getClass();
Field[] declaredFields = clazz.getDeclaredFields();
List<Object> tempList = new ArrayList<Object>();
int titleLength = titles.size();
for (int i = 0; i < declaredFields.length; i++) {
Field field = declaredFields[i];
field.setAccessible(true);
if (Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers())) {// 跳过静态和final的属性
continue;
}
if (null == field.get(temp) || "".equals(field.get(temp)) || " ".equals(field.get(temp))) {
tempList.add("null");
} else if (field.get(temp) instanceof Calendar) {
Calendar calendar = (Calendar) field.get(temp);
tempList.add((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime()));
} else {
tempList.add(field.get(temp));
}
if (titleLength <= 0) {
titles.add(field.getName());
}
}
cells.add(tempList);
}
exportExcel(cells, path);
}
}
至此,基本方法完毕,有问题的朋友可以私信或者留言。