`
wangyf-love-dch
  • 浏览: 1042 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

POI导出EXCEL的做法

阅读更多
用POI导出Excel 模板
   导出的时候,应当分为三步:
     第一步,建立一个导出Excel格式的工具类,方便在后面的控制器中直接调用生成Excel格式;
     第二步,用spring+mybatis的框架创建service来创建所需要导出的文件的方法(),注意要分层次来写,从controller调用service接口的方法,而service的方法实现是在serviceimpl,并且serviceImpl类中SQL方法的实现是调用Mapper接口中方法。而Mapper接口方法的实现是在映射Mapper.xml定义;
     第三步,在控制层将第二步查询的数据拼装到第一步的导出文件的格式中,在页面使用按钮绑定事件导出。
   注意:
1.格式尽量完整,功能齐全,拼装数据时候注意:为空字符串时候,要判断,为空就赋值空;很重要,不然会报错!!!文件名在不同的浏览器的兼容的问题。表格下的命名。
      2.在命名方法和控制器时候,要遵循驼峰规则和快速知道方法功能的习惯,所以,写上注释的代码是很有必要的。建议养成这个良好的习惯。
     3.开发模块时候,要注意分步来实现功能的做法,这样是最有力自己完善和完成模块的。
     4.知识点和不会的,要弄懂,尤其是联合查询几个数据库,分页和按时间排序等的。细节是尤其需要注意的。

  下面是曾经做过的项目的模版:
  导出格式类
package com.util;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import com.ancun.bqbh.capture.model.BqbhProductConsume;

/**
* <p>
* ExcelExport类主要用于excel导出(POI)
*
*/
public class ExcelExport {
        public static Workbook export(List<BqbhProductConsume> list) { 
        //格式化日期  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String[] excelHeader = { "时间", "概要", "类型","文件大小/MB","花费数额","到期时间"};
            // 声明一个工作薄
            //HSSFWorkbook wb = new HSSFWorkbook();
        Workbook  wb = new SXSSFWorkbook();
            // 生成一个表格 这个是考虑50万条都可以导出的大数据表格
            Sheet sheet = wb.createSheet("保全记录");
            //设置表格默认列宽度
            sheet.setDefaultColumnWidth(20);
           
             

            // 生成一个样式 
            CellStyle headStyle = wb.createCellStyle(); 
            CellStyle bodyStyle = wb.createCellStyle();
            // 设置这些样式
           

            headStyle.setFillForegroundColor(IndexedColors.YELLOW.index);// 设置背景色
            headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            bodyStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            bodyStyle.setFillForegroundColor(IndexedColors.WHITE.index);
           
            //设置边框
            headStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框

            headStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框

            headStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

            headStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
            
            headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
            headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
           
            bodyStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框

            bodyStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框

            bodyStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

            bodyStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
            
            bodyStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
           
            bodyStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
           
             // 设置字体
            Font font = wb.createFont();
            font.setColor(HSSFColor.BLACK.index);//字体颜色黑色
            font.setFontHeightInPoints((short) 12);//设置字体大小
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
           
            Font bodyFont = wb.createFont();
            bodyFont.setColor(HSSFColor.BLACK.index);//字体颜色黑色
            bodyFont.setFontHeightInPoints((short) 12);//设置字体大小
            // 把字体应用到当前的样式
//            bodyStyle.setFont(bodyFont);
            headStyle.setFont(font);
            Row row = sheet.createRow((int) 0); //设置第一行的表格名字
            // 获取填充表格的第一行的数据
            for (int i = 0; i < excelHeader.length; i++) {   
                Cell cell = row.createCell(i);   
                cell.setCellValue(excelHeader[i]);   
                cell.setCellStyle(headStyle);  //设置单元格格式 
//                sheet.autoSizeColumn(i); //自动确定宽度  
            }   
            //循环将数据 集合list填入表格的行
            Integer total=0;
            for (int i = 0,j=list.size(); i < j+1; i++) {
            //从第二行开始填充数据
                row = sheet.createRow(i + 1);
                Cell cell0=row.createCell(0);
                    Cell cell1=row.createCell(1);
                    Cell cell2=row.createCell(2);
                    Cell cell3=row.createCell(3);
                    Cell cell4=row.createCell(4);
                    Cell cell5=row.createCell(5);
                    cell0.setCellStyle(bodyStyle);
                    cell1.setCellStyle(bodyStyle);
                    cell2.setCellStyle(bodyStyle);
                    cell3.setCellStyle(bodyStyle);
                    cell4.setCellStyle(bodyStyle);
                    cell5.setCellStyle(bodyStyle);
                   
                   
                if(i==j){
                row.setHeight((short) 600);
                cell0.setCellValue("总计");
                        cell4.setCellValue(total.intValue());
                        break;
            }
              
                BqbhProductConsume bqc = list.get(i);
                total+=(null!=bqc.getSaveMount()?bqc.getSaveMount():0);
                //建立时间
                    String getCreateDate=(null!=bqc.getGmtCreate()?sdf.format(bqc.getGmtCreate()):"");
                    //时间
                    String getSaveFinishTime=(null!=bqc.getSaveFinishTime()?sdf.format(bqc.getSaveFinishTime()):"");
                   
                    cell0.setCellValue(getCreateDate);
                    cell1.setCellValue(bqc.getSaveDesc());
                    //cell2.setCellValue(bqc.getSaveType());
                    cell3.setCellValue(bqc.getSaveSizeString());
                    cell4.setCellValue(bqc.getSaveMount());
                    cell5.setCellValue(getSaveFinishTime);
                   
                     //判断保存类型
                     if (bqc.getSaveType()==1) {
                    cell2.setCellValue("网页");
                   
}else{
cell2.setCellValue("作品");
}
           }   
           return wb;   
      }      

    /**
     * 
     * @Title: processFileName
     * 
     * @Description: ie,chrom,firfox下处理文件名显示乱码
     */ 
    public static String processFileName(HttpServletRequest request, String fileNames) { 
            String codedfilename = null; 
            try { 
                String agent = request.getHeader("USER-AGENT"); 
                if (null != agent && -1 != agent.indexOf("MSIE") || null != agent 
                        && -1 != agent.indexOf("Trident")) {//IE 浏览器
     
                    String name = java.net.URLEncoder.encode(fileNames, "UTF8"); 
     
                    codedfilename = name; 
                } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐、谷歌等 
     
     
                    codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1"); 
                } 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
            return codedfilename; 
        } 
}   

 
0
3
分享到:
评论

相关推荐

    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文件中添加以下依赖: ```...

    java poi导出excel

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

    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生成下拉列表

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

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

    在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...

    poi导出excel需要的jar

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

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

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

    poi导出excel参考方法

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

    poi导出excel表格

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

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    POI的EXCEL导出,自动换行

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

    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。在...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    apache POI 导出Excel 设置打印

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

    java 利用poi导出EXCEL

    提供的`导出EXCEL.docx`文档可能包含了使用POI导出Excel的代码示例。这个文档通常会详细解释每一步操作,包括如何读取数据、如何设置单元格格式以及如何保存文件。 8. **依赖安装** 要使用Apache POI,你需要在...

    java导出excel POI jar包

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

Global site tag (gtag.js) - Google Analytics