import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
/**
* Excel文件工具类
*
* @author Administrator
*
*/
public class ExcelUtils {
/**
* 将实体类的信息写入Excel文件
*
* @param fileName
* excel文件名称 如:文件1.excel
* @param list
* 实体类集合
* @param titles
* excel标题名称
* @param columnLength
* 标题名称宽度
* @param fileds
* 对应标题所填充的实体类信息(属性名)
* @throws IOException
* @throws WriteException
* @throws SecurityException
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> void writeExcel(String fileName, List<T> list,
String[] titles, int[] columnLength, String[] fileds)
throws IOException, WriteException, NoSuchMethodException,
SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
WritableWorkbook wwb = Workbook.createWorkbook(new File(fileName));
if (wwb != null) {
// 创建一个可写入的工作表
// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
/*
* 表头单元格样式的设定 WritableFont.createFont("宋体"):设置字体为宋体 12:设置字体大小
* WritableFont.BOLD:设置字体加粗(BOLD:加粗 NO_BOLD:不加粗) false:设置非斜体
* UnderlineStyle.NO_UNDERLINE:没有下划线 Colour.BLACK 字体颜色 黑色
*/
WritableFont titleFont = new WritableFont(
WritableFont.createFont("宋体"), 12, WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat titleCellFormat = new WritableCellFormat(
titleFont);
// 字休居中
titleCellFormat.setAlignment(Alignment.CENTRE);
// 设置单元格背景色:表体为白色
titleCellFormat.setBackground(Colour.WHITE);
// 整个表格线为细线、黑色
titleCellFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
Colour.BLACK);
WritableFont contentFont = new WritableFont(
WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD,
false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat contentCellFormat = new WritableCellFormat(
contentFont);
// 字休居中
contentCellFormat.setAlignment(Alignment.CENTRE);
// 设置单元格背景色:表体为白色
contentCellFormat.setBackground(Colour.WHITE);
// 整个表格线为细线、黑色
contentCellFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
Colour.BLACK);
for (int i = 0; i < titles.length; i++) {
ws.setColumnView(i, columnLength[i]); // 设置列的宽度
Label label = new Label(i, 0, titles[i], titleCellFormat);
ws.addCell(label);
}
// 填充实体类的基本信息
for (int j = 0; list != null && !list.isEmpty() && j < list.size(); j++) {
T t = list.get(j);
Class clazz = t.getClass();
String[] contents = new String[fileds.length];
for (int i = 0; fileds != null && i < fileds.length; i++) {
String filedName = toUpperCaseFirstOne(fileds[i]);
Method method = clazz.getMethod(filedName);
method.setAccessible(true);
Object obj = method.invoke(t);
String str = String.valueOf(obj);
if (str == null || str.equals("null"))
str = "";
contents[i] = str;
}
for (int n = 0; n < contents.length; n++) {
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(n, j + 1, contents[n],
contentCellFormat);
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
}
}
// 从内存中写入文件中
wwb.write();
// 关闭资源,释放内存
wwb.close();
}
}
/**
* 将第一个字母转换为大写字母并和get拼合成方法
*
* @param origin
* @return
*/
private static String toUpperCaseFirstOne(String origin) {
StringBuffer sb = new StringBuffer(origin);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
sb.insert(0, "get");
return sb.toString();
}
public static void main(String[] args) throws WriteException,
NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException, IOException {
List<User> list = new ArrayList<User>();// 获取数据列表
User oneUser = new User();
oneUser.setName("测试");
list.add(oneUser);
String[] titles = new String[] { "姓名" };// 设置列中文名
int columnLength[] = { 10, 10, 10 };// 设置列宽
String fileds[] = new String[] { "name" };// 设置列英文名
ExcelUtils.writeExcel("D:\\ceshi.xls", list, titles, columnLength,
fileds);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java中jxl导出ecel工具.zip (8个子文件)
CeShiJava
bin
User.class 487B
ExcelUtils.class 6KB
test.dat 83B
.settings
org.eclipse.jdt.core.prefs 598B
src
User.java 225B
ExcelUtils.java 5KB
.project 385B
.classpath 1KB
共 8 条
- 1
资源评论
清澈@Cherry
- 粉丝: 255
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功