public class ExportExcel {
private static ExportExcel exportExcel = new ExportExcel();;
private ExportExcel() {
}
public static ExportExcel getInstance() {
return exportExcel;
}
/**
* 通过一个List<String[]>和String[]和sheetName以及路径path导出一个.xls的excel文件 返回导出的情况。
*
* @param list
* List<Object>就是传入一个从数据库查出的List信息
* @param head
* head这是传入一个数组,这个数组是每列的列名
* @param sheetName
* @return
*/
public static boolean exportToExcel(String path, ArrayList list,
String[] head, String sheetName, String tableName) {
boolean falg = true;
String folder = path + File.separator;
File f = new File(folder);
if (!f.exists()) {
f.mkdirs();
}
WritableWorkbook wwb = null;
try {
File excel = new File(folder + tableName + ".xls");
if (excel.exists()) {
excel.delete();
}
wwb = Workbook.createWorkbook(excel);
WritableSheet sheet = wwb.createSheet(sheetName, 0);
makeSheet(sheet, list, head);
wwb.write();
} catch (Exception e) {
falg = false;
e.printStackTrace();
} finally {
try {
if (wwb != null) {
wwb.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return falg;
}
/**
* 通过一个List<String[]>和String[] 打造一个WritableSheet
*
*/
public static WritableSheet makeSheet(WritableSheet sheet,ArrayList list, String[] head) throws RowsExceededException,
WriteException {
for (int i = 0; i < head.length; i++) {
Label labelHead = new Label(i, 0, head[i]);
sheet.addCell(labelHead);
}
// if(list==null){System.out.println("集合为空");}
for (int j = 0; j < list.size(); j++) {
Object[] obj = (Object[]) list.get(j);
for (int k = 0; k < obj.length; k++) {
String s = obj[k] + "";
sheet.addCell(new Label(k, j + 1, s));
}
}
return sheet;
}
public static void writeToClient(HttpServletResponse response, String path)
throws IOException {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
InputStream fis = null;
OutputStream fos = response.getOutputStream();
File uploadFile = new File(path);
fis = new FileInputStream(uploadFile);
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
// 弹出下载对话框的关键代码
response.setHeader("Content-disposition", "attachment;filename="
+ URLEncoder.encode(path, "utf-8"));
int bytesRead = 0;
// 输入流进行先读,然后用输出流去写
byte[] buffer = new byte[8192];
while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.flush();
fis.close();
bis.close();
fos.close();
}
}
===============后台调用方法-==============
StreamResponse onSubmitFromExportExcelForm(){
String[] head = new String[]{"序号","车牌号","门限车度","实际车速"};
String floder=message.get("excelSavePath")+File.separator+DateUtil.dateFormat(Calendar.getInstance().getTime());
String tablename="zhang"+Calendar.getInstance().getTimeInMillis();
ExportExcel.exportToExcel(floder, overSpeedDataToExcelList, head, "超速报警数据列表",tablename);
String filename=tablename+".xls";
return new MyExcelStreamResponse(floder,filename);
}
=============创建一个类========
public class MyExcelStreamResponse implements StreamResponse{
private String filename;
private String floder;
public MyExcelStreamResponse(String floder,String filename){
this.floder=floder;
this.filename=filename;
}
public String getContentType(){
return "application/vnd.ms-excel";
}
public InputStream getStream(){
try {
return new BufferedInputStream(new FileInputStream(floder+File.separator+filename));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
public void prepareResponse(Response response){
response.setHeader("Content-disposition","attachment;filename="+ filename );
}
}
===================还需要指定保存位置==========
建立一个属性文件:*.properties ,放入Excel保存路径 excelSavePath=D:\\excel\\yyyy
这就是Excel的数据导出功能
分享到:
相关推荐
java Excel导出 Excel数据处理
java解决大批量数据导出Excel产生内存溢出的方案
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
java导出复杂Excel内容数据动态循环
java实现excel的导入导出(poi详解),经过测试poi效率要比jxl要高很多,特别是数据量大的时候jxl根本无法用肉眼入目,本资源是个可运行项目demo,很有参考价值!
除了平时简单的数据导出需求外,我们也经常...源码案例提供了模板,单个数据写入与列表数据写入以及文件导出的代码,详细的说明请参照个人博客“Excel模板导出”,源码可以让读者更加详细的了解Excel导出的过程和原理。
轻松让java 将数据导出到Excel中,java让开发更简单。
java基于poi通过excel模板导出excel文档,整理了一下,收个一分,以示安慰吧
Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出...
java复杂模板excel导出例子
java通过Excel模板导出各种Excel , 支持所有的动态数据,列表,图片, 好用的请给好评! 解压导入到eclipse就可以运行看到效果,里面有简单的例子 , 有很复杂的模板,通过模板导出数据。
Java实现Excel导入导出是通过Java语言编写的程序,将数据从Excel文件中读取或写入到Excel文件中。这种方式可以实现数据的批量处理和分析,提高工作效率。 Java实现Excel导入导出的应用场景。 Java实现Excel导入导出...
Excel源代码,导入导出各种工具类 <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....
java中将数据和图片导出到Excel文件
需要使用JAVA 做EXCEL导出的同学,有问题尽管私信
java 数据库 导出 excel
Java 实现 Excel 导入导出是指使用 Java 语言编写程序来实现将 Excel 文件中的数据导入到 Java 程序中,并将 Java 程序中的数据导出到 Excel 文件中。这种操作可以使用 Apache POI 库来实现。 POI 库简介 Apache ...
用Java实现的Excel的导入导出,简洁明了,高质量代码。
Domino notes java版导出excel,需要组件poi支持,解决Domino日常数据批量导出需求!