`

poi导出excel(这个比较好)

阅读更多
实现方式如下:

页面设计:

<td width="100" align="center"><a href="#" onclick="doExport();return false;" class="blue bold">导出内容到excel</a></td>

function doExport(){

        var dataV=window.showModalDialog("<c:out value='${ctx}'/>/task/dialog.jsp","","dialogWidth=250px;dialogHeight=220px");
    if(dataV !=null && dataV != ""){
        if(dataV == '1'){
            var eleForm = $("pageQueryForm");
         var lastAction = eleForm.action;
         var ExportAll = $("ExportAll");
         if(ExportAll != null){
            eleForm.removeChild(ExportAll);
         }
         eleForm.action = "doExportExcel.action";
         eleForm.submit();
         eleForm.action = lastAction;
         return;
        }else if(dataV == '2'){
            var eleForm = $("pageQueryForm");
         var lastAction = eleForm.action;
         var eleHiddenExportExcel = new Element("input",{type:"hidden",name:"ExportAll"});
         eleHiddenExportExcel.wrap(eleForm);
         eleForm.action = "doExportExcel.action";
         eleForm.submit();
         eleForm.action = lastAction;
         return;
        }
}
}

Action:

两个属性:

String fileNames;
InputStream excelStream;

提供get和set方法

public String doExport() throws TaException{

         String result = "";
 
         User user = (User) this.getSession().get("user");

         if(user != null){

                 String ExportAll = this.getHttpServletRequest().getParameter("ExportAll");

                  List dataList = new ArrayList();
                  if(ExportAll == null){
                          log.debug("导出当前页面内容到excel");
                          this.projectService.queryPageProject(user, pageQueryForm,customDisplayWhere,orderQueryString,orgList);
                         dataList = pageQueryForm.getPageRecordList();
                }else{
                           log.debug("导出所有容到excel");
                          dataList = this.projectService.queryAllProject(user,pageQueryForm,customDisplayWhere,orderQueryString,orgList);
                 }

                 HSSFWorkbook workbook = printExcel(tmpContent,tmpContentCn,dataList);
          
                if(workbook != null){
                       try{
                               Calendar c = Calendar.getInstance();
                              int year = c.get(Calendar.YEAR);
                               int month = c.get(Calendar.MONTH)+1;
                               String month_ = new String(""+month);
                               if(month<10){
                                     month_ = "0"+month;
                               }
                               int day = c.get(Calendar.DAY_OF_MONTH);
                               String day_ = new String(""+day);
                              if(day<10){
                                     day_ = "0"+day;
                                }
                                this.exportExcel(workbook,year+month_+""+day_+"sxta.xls");
                               result = "outExcel";
                         }catch(IOException e){
                               e.printStackTrace();
                               message = "出错了!";
                               redirectTo = this.getHttpServletRequest().getContextPath()+"/task/listProject.action";
                               return SUCCESS;
                         }
                }

        }else{

                 log.debug("user is null");
                message = "出错了!";
                 redirectTo = this.getHttpServletRequest().getContextPath()+"/task/listProject.action";
                 return SUCCESS;

        }

        return result;

}

private HSSFWorkbook printExcel(String tmpContent,String tmpContentCn,List dataList){
 
          HSSFWorkbook workbook = null;
          String[] titles_CN = tmpContentCn.split(",");
          String[] titles_EN = tmpContent.split(",");
          try{
               //创建工作簿实例
                workbook = new HSSFWorkbook();
               //创建工作表实例
              HSSFSheet sheet = workbook.createSheet("sxtaExcel");
               //设置列宽
               this.setSheetColumnWidth(titles_CN,sheet);
             //获取样式
               HSSFCellStyle style = this.createTitleStyle(workbook);
               if(dataList != null){
                    //创建第一行标题
                     HSSFRow row = sheet.createRow((short)0);// 建立新行
                     for(int i=0;i<titles_CN.length;i++){
                     this.createCell(row, i, null, HSSFCell.CELL_TYPE_STRING,
                            this.getText(titles_CN[i]));
                     }
                     //给excel填充数据
                    for(int i=0;i<dataList.size();i++){
                             // 将dataList里面的数据取出来
                             Project project= (Project)dataList.get(i);
                              HSSFRow row1 = sheet.createRow((short) (i + 1));// 建立新行
                  
                             boolean isOverTime = false;
                              for(int j=0;j<titles_EN.length;j++){
                                       String tmpstr = "";
                                       if (titles_EN[j].equals("name")){
                                             this.createCell(row1, j, style, HSSFCell.CELL_TYPE_STRING,
                               project.getName());
                                       }    

                                      ……             

                           }
                 
                   }
            }else{
                     this.createCell(sheet.createRow(0), 0, style,HSSFCell.CELL_TYPE_STRING, "查无资料");
            }
       }catch(Exception e){
                   e.printStackTrace();
       }
      return workbook;
}

//设置列宽
private void setSheetColumnWidth(String[] titles_CN,HSSFSheet sheet){
        // 根据你数据里面的记录有多少列,就设置多少列
       for(int i=0;i<titles_CN.length;i++){
               sheet.setColumnWidth((short)i, (short) 3000);
       }

}

//设置excel的title样式 
private HSSFCellStyle createTitleStyle(HSSFWorkbook wb) {
       HSSFFont boldFont = wb.createFont();
       boldFont.setFontHeight((short) 200);
       HSSFCellStyle style = wb.createCellStyle();
       style.setFont(boldFont);
       style.setDataFormat(HSSFDataFormat.getBuiltinFormat("###,##0.00"));
       //style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
       //style.setFillBackgroundColor(HSSFColor.LIGHT_ORANGE.index);
       return style; 
}
   
   
//创建Excel单元格 
private void createCell(HSSFRow row, int column, HSSFCellStyle style,int cellType,Object value) {
       HSSFCell cell = row.createCell((short) column);
       cell.setEncoding(HSSFCell.ENCODING_UTF_16);
       if (style != null) {
            cell.setCellStyle(style);
       } 
       switch(cellType){
            case HSSFCell.CELL_TYPE_BLANK: {} break;
            case HSSFCell.CELL_TYPE_STRING: {cell.setCellValue(value.toString()+"");} break;
            case HSSFCell.CELL_TYPE_NUMERIC: {
            cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
                cell.setCellValue(Double.parseDouble(value.toString()));}break;
            default: break;
      } 

}

//写入输入流中

private void exportExcel(HSSFWorkbook workbook,String fileName) throws IOException{
        fileNames = fileName;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        workbook.write(baos);
        baos.flush();
        byte[] aa = baos.toByteArray();
        excelStream = new ByteArrayInputStream(aa, 0, aa.length);
        baos.close();
}

接下来,struts.xml中的配置:

<result name="outExcel" type="stream">
                     <param name="contentType">application/vnd.ms-excel</param>   <!-- 注意这里的ContentType -->
                     <param name="inputName">excelStream</param>
                     <param name="contentDisposition">attachment;filename="${fileNames}"</param>
                     <param name="bufferSize">1024</param>
</result>


三个jar包:

OK
分享到:
评论

相关推荐

    POI导出Excel文件

    以下是一个简化的示例,演示了如何使用POI导出Excel: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io....

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    POI导出 POI导出 POI导出

    POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI导出POI...

    poi导出根据模板导出excel和简单列表导出excel源码

    总结来说,"poi-excel-handler" 是一个使用 Apache POI 实现的工具,它提供了根据模板导出和简单列表导出 Excel 的功能。通过利用 POI 的 API,它能够有效地处理大量数据,同时保持代码的可读性。在实际项目中,这样...

    java poi导出excel

    以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...

    使用poi方式导出excel(分多个sheet导出)

    七、导出Excel文件 最后,将Workbook写入OutputStream或File,完成导出: ```java try (FileOutputStream out = new FileOutputStream("output.xlsx")) { workbook.write(out); } catch (IOException e) { e....

    poi导出excel需要的jar

    "poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...

    poi导出excel表格

    本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...

    poi导出excel生成下拉列表

    poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列

    POI的EXCEL导出,自动换行

    通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...

    springboot+poi导出指定格式Excel模板

    springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...

    java导出excel POI jar包

    这个链接提供了一个详细的Java代码示例,演示了如何使用POI导出Excel。在实际开发中,你可以根据这个示例调整代码以满足自己的需求,比如添加更多的数据处理逻辑或自定义样式。记得在导入项目时,确保包含上述提到的...

    poi导出excel参考方法

    POI导出Excel参考方法 POI(Poor Obfuscation Implementation)是一个Java的API,用于操作Microsoft Office文档,包括Excel、Word、PowerPoint等。下面是POI导出Excel参考方法的相关知识点: 1. POI的基本概念 ...

    poi导出excel demo

    在这个"poi导出excel demo"项目中,你可能会看到如何组织这些步骤的示例代码,以及如何处理更复杂的功能,比如合并单元格、插入公式、读取数据等。通过学习和理解这个demo,你可以掌握使用Apache POI创建动态、...

    Java实现POI导出Excel

    Java实现POI导出Excel是Java开发者常用的一种技术,用于生成和操作Microsoft Office Excel文件。在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章...

    poi导出excel通用类

    标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...

    java_poi实现excel导入导出

    要使用 Java POI 实现 Excel 导出,需要首先创建一个 HSSFWorkbook 或 XSSFWorkbook 对象,然后使用该对象创建一个工作表。下面是一个简单的示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; ...

    POI使用Excel模板文件循环输出行并导出Excel

    在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...

Global site tag (gtag.js) - Google Analytics