封装一个导出文件工具
来源:互联网 发布:计算器编程代码 编辑:程序博客网 时间:2024/05/29 18:59
参数讲解:
1.第一个参数:第一行显示的信息(如 姓名 年龄 升高 体重 等等)
2.第二个参数:为要替换进去的数据(比如 name age hight weight ..)
3.第三个参数:为从数据库中查出的数据
4.第四个参数:为文件名可以随便起
public static<T> void exportExcel(List<String> headAttribute,List<String> bodyAttribute,List<T> bodyData,String fileName){
MutiStyleExcelWrite mew = new MutiStyleExcelWrite();
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletResponse response = attributes.getResponse();
response.reset();
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;fileName="+fileName+System.currentTimeMillis()+".xls");
response.setContentType("application/shlnd.ms-excel");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
try{
mew.createExcel(response.getOutputStream(),bodyData, bodyAttribute, headAttribute,fileName, fileName);
}catch(Exception e){
throw new RuntimeException(e);
}
}
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class MutiStyleExcelWrite {
public <T> void createExcel(OutputStream os,List<T> objList,
List<String> propOrderList, List<String> tableHeadList,
String excelName, String sheetName) throws WriteException,IOException {
//创建工作薄
WritableWorkbook workbook = Workbook.createWorkbook(os);
//创建新的一页
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
//构造表头
createExcelHead(sheet,tableHeadList);
WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体
WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);
if(objList!=null&&!"".equals(objList)){
for (int objNum = 0; objNum < objList.size(); objNum++) {
for (int cellNum = 0; cellNum < propOrderList.size(); cellNum++) {
// 将属性的首字母大写
String propertyName = propOrderList.get(cellNum).replaceFirst(
propOrderList.get(cellNum).substring(0, 1),
propOrderList.get(cellNum).substring(0, 1)
.toUpperCase());
//设置单元格宽度
sheet.setColumnView(cellNum+1,15);
try {
// 如果type是类类型,则前面包含"class ",后面跟类名
Method m = objList.get(objNum).getClass()
.getMethod("get" + propertyName);
// 调用getter方法获取属性值
Object property = m.invoke(objList.get(objNum));
//整形数据
if (property instanceof Integer ) {
Number ints = new Number(cellNum,1+objNum,(Integer)property);
sheet.addCell(ints);
}else if(property instanceof Float){
Number ints = new Number(cellNum,1+objNum,(Float)property);
sheet.addCell(ints);
}else if(property instanceof Double){
Number ints = new Number(cellNum,1+objNum,(Double)property);
sheet.addCell(ints);
}else if(property instanceof Long){
Number ints = new Number(cellNum,1+objNum,(Long)property);
sheet.addCell(ints);
}else if (property instanceof Date) {
String strdate = TimeHelper.dateTimeToStr2((Date) property,
"yyyy-MM-dd HH:mm:ss") ;
Label example = new Label(cellNum,1+objNum,strdate);
sheet.addCell(example);
}
else{
Label example = new Label(cellNum,1+objNum,(String)property,boldNumberFormate);
sheet.addCell(example);
}
} catch (Exception e) {
log.error("生成excel解析数据出错:"+ e);
}
}
}
}
//把创建的内容写入到输出流中,并关闭输出流
workbook.write();
workbook.close();
os.close();
}
public void createExcelHead( WritableSheet sheet,
List<String> tableHeadList) throws RowsExceededException, WriteException {
for (int cellNum = 0; cellNum < tableHeadList.size(); cellNum++) {
Label floats = new Label(cellNum,0,tableHeadList.get(cellNum));
sheet.addCell(floats);
}
}
}
- 封装一个导出文件工具
- 封装导出csv文件类
- Poi实现Excel导出工具类封装
- Poi实现Excel导出工具类封装
- Excel导入导出封装工具类
- java导出excel封装成工具类
- 封装一个Ajax工具函数
- 封装一个SqliteDataBase工具类
- 一个导出CListCtrl控件数据到Excel文件的封装函数[r]
- C++封装DLL,导出一个类
- C++封装DLL,导出一个类
- 导出到excel文件工具
- 导出CSV文件工具类
- 文件目录结构导出工具
- Excel导出到文件工具
- java 导出excel封装了一个简单的导出方法。
- Android开发之Toast吐司的一个封装好的工具类。带有源代码java文件,
- 利用JavaCompiler编译java文件(一个简单封装的工具类)
- liferay7中osgi学习
- codeforces 701-C. They Are Everywhere(尺取)
- LeetCode
- yii生成Gii
- ubuntu安装openjdk
- 封装一个导出文件工具
- ubuntu 14 网络配置如何设置
- 如何解决warning: no newline at end of file?
- 一个很有意思的平均值实验
- iOS开发经验总结(一)
- mybatis <where> <set>标签的作用
- 问题解决java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout
- spark读取hive表数据实操
- SSM框架Spring+SpringMVC+MyBatis——详细整合教程