`
u010214413
  • 浏览: 41539 次
社区版块
存档分类
最新评论

使用Apache POI 实现导出数据到Excel 并下载到本地

    博客分类:
  • java
阅读更多
原文地址:http://www.cnblogs.com/bmbm/archive/2011/12/08/2342261.html
感谢这位大神

1.首先下载poi-3.6-20091214.jar,下载地址如下:

http://download.csdn.net/detail/evangel_z/3895051
2.Student.java

import java.util.Date; 
 
public class Student 

    private int id; 
    private String name; 
    private int age; 
    private Date birth; 
 
    public Student() 
    { 
    } 
 
    public Student(int id, String name, int age, Date birth) 
    { 
        this.id = id; 
        this.name = name; 
        this.age = age; 
        this.birth = birth; 
    } 
 
    public int getId() 
    { 
        return id; 
    } 
 
    public void setId(int id) 
    { 
        this.id = id; 
    } 
 
    public String getName() 
    { 
        return name; 
    } 
 
    public void setName(String name) 
    { 
        this.name = name; 
    } 
 
    public int getAge() 
    { 
        return age; 
    } 
 
    public void setAge(int age) 
    { 
        this.age = age; 
    } 
 
    public Date getBirth() 
    { 
        return birth; 
    } 
 
    public void setBirth(Date birth) 
    { 
        this.birth = birth; 
    } 
 

3.CreateSimpleExcelToDisk.java
import java.io.FileOutputStream; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.List; 
 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFCellStyle; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
 
public class CreateSimpleExcelToDisk 

    /**
     * @功能:手工构建一个简单格式的Excel
     */ 
    private static List<Student> getStudent() throws Exception 
    { 
        List list = new ArrayList(); 
        SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); 
 
        Student user1 = new Student(1, "张三", 16, df.parse("1997-03-12")); 
        Student user2 = new Student(2, "李四", 17, df.parse("1996-08-12")); 
        Student user3 = new Student(3, "王五", 26, df.parse("1985-11-12")); 
        list.add(user1); 
        list.add(user2); 
        list.add(user3); 
 
        return list; 
    } 
 
    public static void main(String[] args) throws Exception 
    { 
        // 第一步,创建一个webbook,对应一个Excel文件 
        HSSFWorkbook wb = new HSSFWorkbook(); 
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet 
        HSSFSheet sheet = wb.createSheet("学生表一"); 
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short 
        HSSFRow row = sheet.createRow((int) 0); 
        // 第四步,创建单元格,并设置值表头 设置表头居中 
        HSSFCellStyle style = wb.createCellStyle(); 
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 
 
        HSSFCell cell = row.createCell((short) 0); 
        cell.setCellValue("学号"); 
        cell.setCellStyle(style); 
        cell = row.createCell((short) 1); 
        cell.setCellValue("姓名"); 
        cell.setCellStyle(style); 
        cell = row.createCell((short) 2); 
        cell.setCellValue("年龄"); 
        cell.setCellStyle(style); 
        cell = row.createCell((short) 3); 
        cell.setCellValue("生日"); 
        cell.setCellStyle(style); 
 
        // 第五步,写入实体数据 实际应用中这些数据从数据库得到, 
        List list = CreateSimpleExcelToDisk.getStudent(); 
 
        for (int i = 0; i < list.size(); i++) 
        { 
            row = sheet.createRow((int) i + 1); 
            Student stu = (Student) list.get(i); 
            // 第四步,创建单元格,并设置值 
            row.createCell((short) 0).setCellValue((double) stu.getId()); 
            row.createCell((short) 1).setCellValue(stu.getName()); 
            row.createCell((short) 2).setCellValue((double) stu.getAge()); 
            cell = row.createCell((short) 3); 
            cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu 
                    .getBirth())); 
        } 
        // 第六步,将文件存到指定位置 
        try 
        { 
            FileOutputStream fout = new FileOutputStream("E:/students.xls"); 
            wb.write(fout); 
            fout.close(); 
        } 
        catch (Exception e) 
        { 
            e.printStackTrace(); 
        } 
    } 

-------------------------我是华丽的分割线------------------------------
下面实现下载功能:
HttpServletResponse response = ServletActionContext.getResponse();
File file = new File(path);// path是根据日志路径和文件名拼接出来的
            String filename = file.getName();// 获取日志文件名称
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            response.reset();
            // 先去掉文件名称中的空格,然后转换编码格式为utf-8,保证不出现乱码,这个文件名称用于浏览器的下载框中自动显示的文件名
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.replaceAll(" ", "").getBytes("utf-8"),"iso8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream os = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            os.write(buffer);// 输出文件
            os.flush();
            os.close();
分享到:
评论

相关推荐

    Apache Poi Excel导出

    这篇博客“Apache Poi Excel导出”可能详细介绍了如何使用Apache POI库来生成Excel文件,特别适用于数据导出或报表生成等场景。 Apache POI API 包含多个关键组件,如HSSF(Horizontally Stored Format)用于处理旧...

    基于Apache POI导出大数据量(百万级)Excel的实现

    【作品名称】:基于Apache POI导出大数据量(百万级)Excel的实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    Apache POI 模板导出excel.rar

    综上所述,"Apache POI 模板导出excel.rar"中的内容主要涵盖了使用Apache POI库处理Excel模板,填充数据并导出报表的整个流程,涉及到了文件操作、数据处理、样式控制、性能优化等多个方面的技术知识。通过理解和...

    java_poi实现excel导入导出

    在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了一系列的 API,用于处理 Microsoft Office 文件...

    POI实现的基于动态模板的EXCEL数据导出

    标题中的“POI实现的基于动态模板的EXCEL数据导出”是指利用Apache POI库来创建一个可以动态填充数据的Excel模板,从而实现大量数据的高效导出。Apache POI是一个开源项目,它允许Java开发者读写Microsoft Office...

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

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

    使用POI导出大数据量到EXCEL

    "使用POI导出大数据量到EXCEL"这个主题涉及到如何高效地利用POI处理大量数据并将其导出到Excel文件中。以下是对这个主题的详细讲解。 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了Java API来创建、...

    Springboot+Poi实现Excel的导入导出

    1. **导出Excel**:首先,使用MyBatis执行SQL查询获取数据,然后通过POI创建一个Workbook对象,代表Excel工作簿。接着,创建Sheet对象表示工作表,并在其中添加Row和Cell来填充数据。最后,将Workbook写入到本地文件...

    poi导出数据到excel里

    在这个场景中,"poi导出数据到excel里"指的是使用Apache POI库在Java项目中将数据写入Excel文件的过程。这个功能在数据分析、报表生成或者数据导出等场景中非常常见。以下是对Apache POI导出数据到Excel的详细解释:...

    POI导出带图片的excel

    在本文中,我们将深入探讨如何使用POI库将图片插入到Excel文档中,以便创建包含图像的丰富报告。 首先,让我们理解POI的基本概念。Apache POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet ...

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

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

    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

    保存并导出Excel文件 完成数据填充后,最后一步是关闭工作簿并将Excel文件保存到指定路径。根据给定代码示例,在保存之前还进行了文件路径的检查和创建操作。 ```java book.write(); book.close(); ``` #### 五、...

    POI的EXCEL导出,自动换行

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

    Apache poi 导出excel实例

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

    Apache POI导入和导出Excel文件.

    Apache POI导入和导出Excel文件

    POI导出Excel万级数据分页实现 解决内存溢出问题

    然而,当处理大量数据时,直接使用POI导出Excel可能会遇到内存溢出问题,因为POI将整个工作簿加载到内存中。本项目演示了如何通过分页方式解决这个问题,避免一次性加载过多数据导致的性能瓶颈。 首先,理解POI的...

    使用POI,实现excel文件导出,图片url导出文件,图片和excel文件导出压缩包

    使用POI导出Excel文件** 导出Excel文件主要涉及以下几个步骤: - **创建Workbook对象**:这是Excel文件的容器,可以使用`XSSFWorkbook`(针对.xlsx)或`HSSFWorkbook`(针对.xls)创建。 - **创建Sheet对象**:...

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

    本教程将详细介绍如何利用Apache POI库来实现使用多个Sheet(工作簿)导出一个Excel文件的功能。 一、Apache POI简介 Apache POI 是一个开源项目,提供API来读取、写入和修改Microsoft Office文件格式,如Word(DOC...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

Global site tag (gtag.js) - Google Analytics