package com.jz.util;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.hssf.util.HSSFColor;
import com.jz.dao.impl.AttendanceDaoImpl;
import com.jz.vo.Attendance;
public class ExportExcel<T> {
public void exportExcel(Collection<T> dataset, OutputStream out) {
exportExcel("测试POI导出EXCEL文档", null, dataset, out, "yyyy-MM-dd");
}
public void exportExcel(String[] headers, Collection<T> dataset,
OutputStream out) {
exportExcel("测试POI导出EXCEL文档", headers, dataset, out, "yyyy-MM-dd");
}
public void exportExcel(String[] headers, Collection<T> dataset,
OutputStream out, String pattern) {
exportExcel("测试POI导出EXCEL文档", headers, dataset, out, pattern);
}
public void exportExcel(String title, String[] headers,
Collection<T> dataset, OutputStream out, String pattern) {
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet(title);
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((short) 15);
// 生成一个样式
HSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成一个字体
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short) 12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到当前的样式
style.setFont(font);
// 生成并设置另一个样式
HSSFCellStyle style2 = workbook.createCellStyle();
style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 生成另一个字体
HSSFFont font2 = workbook.createFont();
font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
// 把字体应用到当前的样式
style2.setFont(font2);
// 声明一个画图的顶级管理器
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
// 定义注释的大小和位置,详见文档
HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0,
0, 0, 0, (short) 4, 2, (short) 6, 5));
// 设置注释内容
comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
comment.setAuthor("leno");
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
for (short i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
// 遍历集合数据,产生数据行
Iterator<T> it = dataset.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
T t = (T) it.next();
// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
Field[] fields = t.getClass().getDeclaredFields();
for (short i = 0; i < fields.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style2);
Field field = fields[i];
String fieldName = field.getName();
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
try {
Class tCls = t.getClass();
Method getMethod = tCls.getMethod(getMethodName,
new Class[] {});
Object value = getMethod.invoke(t, new Object[] {});
// 判断值的类型后进行强制类型转换
String textValue = null;
if (value instanceof Boolean) {
boolean bValue = (Boolean) value;
textValue = "男";
if (!bValue) {
textValue = "女";
}
} else if (value instanceof Date) {
Date date = (Date) value;
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
textValue = sdf.format(date);
} else {
// 其它数据类型都当作字符串简单处理
textValue = value.toString();
}
// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成
if (textValue != null) {
Pattern p = Pattern.compile("^//d+(//.//d+)?$");
Matcher matcher = p.matcher(textValue);
if (matcher.matches()) {
// 是数字当作double处理
cell.setCellValue(Double.parseDouble(textValue));
} else {
HSSFRichTextString richString = new HSSFRichTextString(
textValue);
HSSFFont font3 = workbook.createFont();
font3.setColor(HSSFColor.BLUE.index);
richString.applyFont(font3);
cell.setCellValue(richString);
}
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} finally {
// 清理资源
}
}
}
try {
workbook.write(out);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ExportExcel<Attendance> ex = new ExportExcel<Attendance>();
AttendanceDaoImpl attendao=new AttendanceDaoImpl();
String[] headers =
{ "打卡编号","姓名", "上班时间", "下班时间", "机器号","部门"};
List<Attendance> atten=attendao.findByName("小刘", "2015-12");
try
{
OutputStream out = new FileOutputStream("E:\\C.xls");
ex.exportExcel(headers, atten, out);
out.close();
JOptionPane.showMessageDialog(null, "导出成功!");
System.out.println("excel导出成功!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
jsp+servlet考勤管理系统 (276个子文件)
ExportExcel.class 10KB
ReadExcel.class 8KB
AttendanceDaoImpl.class 6KB
EmployeeDaoImpl.class 6KB
AttendanceServlet.class 5KB
DepartmentDaoImpl.class 5KB
UserDaoImpl.class 5KB
UserServlet.class 5KB
EmployeeServlet.class 5KB
VactionDaoImpl.class 5KB
CompanyDaoImpl.class 4KB
Employee.class 3KB
CompanyServlet.class 3KB
DepartmentServlet.class 3KB
LoginFilter.class 3KB
VactionServlet.class 3KB
Vaction.class 3KB
CompanyBizImpl.class 2KB
BaseDao.class 2KB
StringUtil.class 2KB
Attendance.class 2KB
EmployeeBizImpl.class 2KB
VactionBizImpl.class 2KB
Company.class 2KB
User.class 2KB
UserBizImpl.class 1KB
Department.class 1KB
AttendanceBizImpl.class 1KB
DepartmentBizImpl.class 1KB
Test.class 818B
AttendanceDao.class 607B
EmployeeDao.class 514B
AttendanceBiz.class 472B
EmployeeBiz.class 463B
VactionDao.class 440B
VactionBiz.class 440B
UserBiz.class 432B
UserDao.class 432B
DepartmentDao.class 398B
CompanyBiz.class 341B
CompanyDao.class 341B
DepartmentBiz.class 307B
.classpath 679B
org.eclipse.wst.common.component 474B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.min.css 104KB
glyphicons.css 52KB
style.min.css 50KB
font-awesome-ie7.min.css 37KB
jquery-ui-1.10.3.custom.css 31KB
elfinder.min.css 29KB
font-awesome.min.css 22KB
halflings.css 20KB
bootstrap-responsive.min.css 16KB
chosen.css 14KB
ie9.css 13KB
fullcalendar.css 11KB
uniform.default.css 10KB
noty_theme_default.css 9KB
style-responsive.min.css 6KB
jquery.iphone.toggle.css 4KB
uploadify.css 2KB
jquery.gritter.css 2KB
jquery.noty.css 2KB
elfinder.theme.css 2KB
jquery.cleditor.css 1KB
retina.css 672B
ie.css 639B
glyphicons-regular.eot 143KB
fontawesome-webfont_2d2816fe.eot 37KB
fontawesome-webfont_aea8981c.eot 37KB
glyphiconshalflings-regular.eot 33KB
buttons.gif 3KB
spinner-mini.gif 2KB
progress.gif 2KB
toolbar.gif 68B
crop.gif 0B
poi-ooxml-schemas-3.15-beta1.jar 5.65MB
xmlbeans-2.6.0.jar 2.6MB
poi-3.15-beta1.jar 2.42MB
poi-scratchpad-3.15-beta1.jar 1.26MB
poi-ooxml-3.15-beta1.jar 1.23MB
jxl.jar 664KB
sqljdbc4.jar 571KB
poi-examples-3.15-beta1.jar 334KB
standard-1.1.0.jar 312KB
curvesapi-1.03.jar 90KB
servlet-api.jar 83KB
poi-excelant-3.15-beta1.jar 31KB
jstl-1.1.0.jar 17KB
ExportExcel.java 8KB
ReadExcel.java 7KB
EmployeeDaoImpl.java 6KB
EmployeeServlet.java 6KB
AttendanceDaoImpl.java 5KB
UserServlet.java 5KB
AttendanceServlet.java 5KB
DepartmentDaoImpl.java 4KB
UserDaoImpl.java 4KB
VactionDaoImpl.java 3KB
共 276 条
- 1
- 2
- 3
资源评论
- xiong199201232020-04-14没数据库啊
- rcrbmggban2018-02-12资源太多了,都是class文件啊
- nongyue19952018-01-02少业务文件- -、代码可以借鉴
- qq_340532232017-12-21资源太多了,都是class文件啊
- hy_03152017-10-05资源太多了,都是class文件啊曲终--人散2017-11-07不是呀 有源码呀 在src目录呀
曲终--人散
- 粉丝: 6
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功