`
liudeh_009
  • 浏览: 242743 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

poi导出Excel报表

    博客分类:
  • JDK
阅读更多

   下面是对poi导出excel的封装,稍微改动一下就能用于其它项目

 

    pojo类见http://liudeh-009.iteye.com/blog/1847626的Student类

 

    Excel导出类:

  

/**
 * 
 * 类ExportBookOrderTool.java的实现描述:学生数据报表导出工具类
 * @author liudeh_009 2012-11-5 下午02:34:03
 */
public class ExportStudentDataTool {
    private HSSFWorkbook workbook;
    private HSSFSheet sheet;
    private HSSFCellStyle cellStyle;
    
    public ExportStudentDataTool(){
        workbook = new HSSFWorkbook();
        sheet = workbook.createSheet();
        workbook.setSheetName(0, "学生数据报表");
        
        Font font =  workbook.createFont();  
        font.setColor(HSSFColor.RED.index); 
        cellStyle = workbook.createCellStyle();  
        cellStyle.setFont(font);
    }   
    
    public void exportExcel(List<Student> Students,HttpServletResponse response){       
        createSheetTitle(sheet);
        int sumCount = createSheetCotent(Students,sheet);
        totalToExport(sheet,sumCount);
        exportExcel2Client(workbook,response);    
    }
    /**
     * 输出excel的标题行
     * @param sheet
     */
    private void createSheetTitle(HSSFSheet sheet){
        int cellCount=0;
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell = row.createCell(cellCount++,1);
        cell.setCellValue("ID");//忽视的列
        cell = row.createCell(cellCount++,1);
        cell.setCellValue("姓名");
        cell = row.createCell(cellCount++,1);
        cell.setCellValue("年龄");
    }
    
    /**
     * 输出excel的主体内容
     * @param Students
     * @param sheet
     * @param count
     * @param userId
     * @return
     */
    private int createSheetCotent(List<Student> Students,HSSFSheet sheet){
        int sumRow = 0; //共导出多少条
        HSSFCell cell = null;
        HSSFRow row = null;
        for(Student student : Students){
           if (student == null) {
                continue;
            }
           int cellCount=0;
           sumRow++;
           row = sheet.createRow(sumRow);
           cell = createCell(sumRow,row,cellCount++, 1);
           cell.setCellValue(student.getId());//忽视的列
           
           cell = createCell(sumRow,row,cellCount++, 1);
           cell.setCellValue(student.getName());//预约流水号
           
           cell = createCell(sumRow,row,cellCount++, 1);
           cell.setCellValue(student.getAge());//订单标号
       }
        
       return sumRow;
    }
    
    /**
     * 偶数行字体增加颜色
     * @param Student
     * @param row
     * @param location
     * @param size
     * @return
     */
    @SuppressWarnings("deprecation")
    private HSSFCell createCell(int sumRow,HSSFRow row,int location, int size){
        HSSFCell cell = row.createCell(location,size);
        if(sumRow%2==0){
        	  cell.setCellStyle(cellStyle);  
        } 
        return cell;
    }
    
    
    /**
     * 总共行
     * @param sheet
     * @param totalCount
     */
    private void totalToExport(HSSFSheet sheet,int totalCount){
        HSSFRow row = sheet.createRow(totalCount + 2);
        HSSFCell cell = row.createCell(1,1);
        cell.setCellValue("总共");
        cell = row.createCell(2,1);
        cell.setCellValue(Integer.toString(totalCount));
  }
    
  @SuppressWarnings("unused")
  private void exportExcel2Client(HSSFWorkbook workbook,HttpServletResponse response){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           String nowDate = sdf.format(new Date());
           String fileName = "attachment; filename=学生数据报表-"+nowDate+".xls";
           OutputStream out = null; 
           try {
                response.setHeader("Content-disposition",new String(fileName.getBytes("gbk"),"ISO-8859-1"));    
                response.setContentType("application/msexcel;charset=GBK");    
                out = response.getOutputStream();
                workbook.write(out);
                out.flush();    
                out.close();    
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(out!=null){
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    }  
}
   

 

     调用方式非常简单.只需传学生的列表对象stList和response对象,如下:

      

  ExportStudentDataTool exportStudentDataTool = new ExportStudentDataTool();
  exportStudentDataTool.exportExcel(stList, response);
 

 

    导出最终excel表格内容如下:

    

 

   最后要注意,一个sheet的记录行数不能超过65535,超过这个数就要考虑创建多个sheet或者多个excel文件

    

 

 

 

  • 大小: 39.1 KB
分享到:
评论

相关推荐

    POI导出Excel报表

    用于导入导出Excel,方便好用 支持动态用流写至客户端

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...

    详解JAVA_POI导出EXCEL报表的操作(包括各种格式及样式的实现)

    ### JAVA POI 导出 EXCEL 报表的操作详解(含格式及样式实现) #### 一、概述 在日常工作中,我们经常会遇到需要将数据导出到 Excel 的情况,尤其是在处理大量的报表数据时。Java POI 库为 Java 开发者提供了一种...

    POI导出Excel表格

    以下是关于POI导出Excel表格的相关知识点的详细解释。 1. **Apache POI库**: Apache POI 是一个开源项目,它提供了一组API用于读写Microsoft Office格式的文件,如Excel(XLS,XLSX),Word(DOC,DOCX)和...

    POI报表导出excel

    在这个“POI报表导出excel”的案例中,我们将深入探讨如何使用POI 3.6版本来实现报表的导出,包括设置Excel样式、合并单元格以及处理多表头的合并。 首先,我们需要了解Apache POI的核心组件:HSSFWorkbook(用于...

    Java使用POI实现Excel报表的导入和导出

    ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat服务器 3.web页面具体路径:http://localhost:80/poi 4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5.点击...

    poi导出excel参考方法

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

    POI的EXCEL导出,自动换行

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

    apache POI 导出Excel 设置打印

    在使用Apache POI导出Excel时,首先需要创建一个`XSSFWorkbook`对象作为工作簿,然后通过工作簿创建`XSSFSheet`对象代表工作表。例如: ```java XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet =...

    java导出excel POI jar包

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

    jxls-poi导出excel示例代码文件

    4. **导出Excel**:最后,`jxls-poi`会生成一个新的Excel文件,其中包含了从JSON数据填充后的内容。你可以选择保存到本地或者直接通过HTTP响应发送给用户下载。 具体代码示例可能如下: ```java import org.jxls....

    Apache poi 导出excel实例

    这篇博客文章“Apache POI 导出excel实例”将深入探讨如何使用Apache POI库来生成Excel文件,这对于在Java环境中处理大量数据并需要导出为Excel格式的应用非常有用。 首先,我们需要导入Apache POI库到我们的项目中...

    POI 生成EXCEL2007【含例子】

    学习和理解这些知识点对于开发需要处理Excel文件的Java应用至关重要,特别是在数据导入导出、报表生成、自动化测试等领域。通过实践这些示例,开发者能够掌握如何利用Apache POI高效地生成和操作Excel 2007文件,...

    导出excel文档所需要的poi的jar包

    这样,你就可以利用Apache POI提供的API来创建复杂的Excel报表,比如设置单元格的值、格式、公式,合并单元格,插入图表,应用条件格式等等。同时,Apache POI还支持读取已有的Excel文件,方便进行数据导入、分析和...

    POI实现Excel导入导出并附带加载进度条

    本项目通过Apache POI实现了Excel的导入与导出功能,并在操作过程中加入了进度条展示,增强了用户体验。 首先,Apache POI的核心类HSSFWorkbook和XSSFWorkbook分别用于处理老版本的.xls和新版本的.xlsx文件。在导入...

    根据poi导出excel能够正确运行

    "根据poi导出excel能够正确运行"这个标题表明我们将讨论一个成功的POI实现,使得程序能够生成并正确运行Excel文件。 首先,我们需要理解Apache POI的基本概念。它提供了HSSF(Horizontally Stored Spreadsheet ...

    poi方式导出excel需要的3个jar包

    以下是一个简单的使用Apache POI导出Excel的工作流程示例: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java....

    POI生成excel报表

    ### POI生成Excel报表知识点详解 #### 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,主要用于处理Microsoft Office格式的文件。它提供了API来读写Word、Excel等Office文档格式。其中,处理...

Global site tag (gtag.js) - Google Analytics