`
zhangrong108
  • 浏览: 206608 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 多样化的Excel数据导出

阅读更多

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的数据导出功能

分享到:
评论

相关推荐

    Excel报表导出,复杂Excel模板导出(带单元格合并),jxls2

    总结起来,这个项目通过`jxls2`库提供了一种高效、灵活的Excel报表导出解决方案,支持单元格合并和复杂的模板设计,能够满足多样化的需求,对于提升企业级应用的数据处理能力有着显著的作用。开发者只需花费较少的...

    Elasticsearch数据导出工具

    总结来说,Elasticsearch数据导出工具是一个强大的数据迁移工具,它通过Java实现了与MySQL的无缝连接,允许用户灵活地在Elasticsearch和MySQL之间移动数据,同时也支持将数据保存在本地文件系统,以适应多样化的数据...

    个性化定制excel报表数据导出工具

    然而,随着业务需求的多样化,简单的预设报表往往无法满足所有场景,这就催生了对“个性化定制Excel报表数据导出工具”的需求。本文将深入探讨这一工具的实现原理、应用场景及其实现方式。 首先,我们来理解这个...

    Java 将数据处理成 PDF 、Excel格式

    综上所述,Java结合iText库可以方便地将数据转化为结构化的PDF文档,利用`PdfWriter`、`Paragraph`、`Font`等工具,以及可能的自定义封装,提高生成PDF的效率和灵活性。同时,通过Apache POI库,可以处理Excel文件,...

    帆软报表导出各种格式(excel/word/pdf等)

    总结来说,帆软报表的导出功能强大且多样,不仅支持Excel、Word、PDF等常见格式,还提供了数据源配置和自动化推送等辅助工具,为企业数据管理和决策支持提供了便捷的解决方案。通过熟练掌握这些知识,用户可以更加...

    excel 注解方式导入导出(包含常用工具类)

    首先,Excel的注解方式导入导出是一种高效且灵活的数据处理手段,它通过Java编程语言,利用Apache POI库或其他类似的库,如JExcelAPI,对Excel文件进行操作。这种方式通常涉及创建数据模型类,并在模型类的字段上...

    用POI把数据导出为Excel

    在提供的文件名列表中,“BaseExportExcel.txt”可能包含基础的Excel导出逻辑,“反射工具定义类.txt”可能涉及使用Java反射机制动态处理数据,这在处理多样化的数据源时非常有用。“用POI把数据导出为Excel.txt”...

    利用java操作Excel文件

    3. 文件自动化处理:使用Java可以自动处理大量的Excel文件,例如批量修改文件名、批量导出数据等。 Java操作Excel文件的技术难点: 1. Excel文件格式:Excel文件有多种格式,例如xls、xlsx等,每种格式都有其特点...

    大数据快速导出EXCEL-Java

    总结起来,大数据快速导出到Excel的Java实现主要依赖于低内存消耗的库,如Apache POI的SXSSFWorkbook,配合有效的数据处理和转换策略。通过这样的方式,即使面对百万级的数据,也能在5秒内完成导出,且对内存资源的...

    poi_excel导入导出各种excel文件实例

    总结,Apache POI 提供了强大且灵活的 API 来处理 Excel 文件,无论是在导入数据进行分析,还是导出报表,都能满足多样化的需求。在实际开发中,可以根据项目需求选择合适的 API,注意性能优化,避免内存溢出等问题...

    JasperReport与Java程序,导出不同格式的报表,包括pdf,excel,html,报表打印等功能

    JasperReport是一款强大的开源报表工具,它允许开发者创建复杂、美观的报表,并能与各种应用程序集成,...通过学习和掌握这两者,你将能够提升你的Java应用程序的报表处理能力,为用户提供更专业、多样的数据展现方式。

    文件下载 用poi导出excel文档

    ### 文件下载:使用POI导出Excel文档 在日常工作中,我们经常需要处理大量数据,并将其以Excel格式导出供用户...此外,还可以进一步扩展该功能,例如增加样式设置、复杂数据处理等功能,以适应更多样化的业务需求。

    ireport+springMVC 报表导出pdf excel

    总之,结合iReport的报表设计能力和SpringMVC的Web应用处理能力,我们可以方便地实现在Web应用中导出报表为PDF和Excel的功能,满足用户对数据的多样化需求。这一过程涉及到的技术和细节较多,需要开发者具备扎实的...

    Struts1.2导出Excel表

    这个“完美版”可能包含了优化的性能、多样化的样式以及完善的错误处理机制,确保了用户在导出大量数据时的稳定性和效率。在实际项目中,可以根据需求进一步定制,如支持多sheet、自定义模板等高级功能。学习并掌握...

    poi教程,用于java解析,excel文件转换

    随着业务需求的多样化和技术的发展,能够灵活处理各种数据格式的技术变得越来越受欢迎。其中,Excel作为最常用的表格处理工具之一,其在数据展示和分析中的应用极为广泛。对于Java开发者而言,Apache POI库提供了...

    jxls导入导出

    **jxls导入导出**是Java开发中处理Excel数据与数据库交互的一种技术,它基于Apache POI库,提供了方便快捷的方式来导入Excel数据到数据库以及从数据库导出数据到Excel文件。这种技术尤其适用于批量处理数据或者创建...

    地址拆分软件+源码(对区、镇、路、弄、号等进行拆分,并导出到EXCEL中。)

    本文将详细探讨基于给定的标题“地址拆分软件+源码”及其描述中的知识点,主要涉及地址解析、数据处理和Excel导出。 首先,地址拆分是将一个完整的地址分解成各个组成部分的过程,如区、镇、路、弄(巷或小区)、号...

    jasper+ireport+jfreechart导出html.excel.word.pdf

    在这个主题中,我们将深入探讨JasperReports、iReport以及JFreeChart这三款组件如何协同工作来实现报表的多样化导出。 首先,JasperReports是Java平台上的一个报告库,它允许开发者设计复杂的报表,并以多种格式...

    jxl报表制作工具

    总之,JXL报表制作工具是Java开发者在处理Excel任务时的强大助手,通过掌握其核心功能和使用技巧,可以有效地提高工作效率,满足多样化的需求。在实际项目中,结合合理的编程实践和错误处理机制,可以充分发挥JXL的...

    exceljar包

    不仅如此,Exceljar还提供了对样式、公式、图表等复杂元素的支持,满足了多样化的Excel处理需求。 在使用Exceljar进行CRUD操作时,首先要将其添加为项目的依赖。这通常通过Maven或Gradle等构建工具来完成,将对应的...

Global site tag (gtag.js) - Google Analytics