`

JAVA通过POI实现多sheet导出功能

    博客分类:
  • Java
阅读更多
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
    public static void main(String[] args) throws Exception {
        List<List> head = new ArrayList();
        //sheet名称
        List<String> name = new ArrayList<String>(Arrays.asList(new String[]{"大区","分公司","门店"}));

        //每个sheet头
        List<String> head1 = new ArrayList<String>(Arrays.asList(new String[]{"大区头1","大区头2","大区头3","大区头4","大区头5"}));
        List<String> head2 = new ArrayList<String>(Arrays.asList(new String[]{"分公司头1","分公司头2","分公司头3"}));
        List<String> head3 = new ArrayList<String>(Arrays.asList(new String[]{"门店头1","门店头2"}));

        head.add(head1);
        head.add(head2);
        head.add(head3);

        //每个sheet数据
        List<List<List>> data = new ArrayList<List<List>>();
        List<List> data1 = new ArrayList<List>();
        List<List> data2 = new ArrayList<List>();
        List<List> data3 = new ArrayList<List>();


        for (int i = 0; i < 10; i++) {
            List tmpList = new ArrayList();
            for (int j = 0; j < 5; j++) {
                tmpList.add(j);
            }
            data1.add(tmpList);
        }

        for (int i = 0; i < 4; i++) {
            List tmpList = new ArrayList();
            for (int j = 0; j < 3; j++) {
                tmpList.add(j);
            }
            data2.add(tmpList);
        }

        for (int i = 0; i < 6; i++) {
            List tmpList = new ArrayList();
            for (int j = 0; j < 2; j++) {
                tmpList.add(j);
            }
            data3.add(tmpList);
        }

        data.add(data1);
        data.add(data2);
        data.add(data3);

        //System.out.println(xx.get(0));
        createExcelSheet(name,head,data,"d://1.xls");
    }


    @SuppressWarnings("unchecked")
    private static void createExcelSheet(List<String> sheetName, List<List> sheetHeader,List<List<List>> sheetData, String fileRealPath)
            throws Exception {
        HSSFWorkbook workBook = new HSSFWorkbook();

        int sheetnum = sheetName.size();

            for(int m=0; m<sheetnum; m++){
                HSSFSheet sheet = workBook.createSheet();
                String msg = sheetName.get(m).toString();
                String str = new String(msg.getBytes("UTF-8"),"UTF-8");
                workBook.setSheetName(m,str);
                HSSFHeader header = sheet.getHeader();
                header.setCenter("sheet");
                HSSFRow headerRow = sheet.createRow(0);

                HSSFCellStyle headstyle = workBook.createCellStyle();
                HSSFFont headfont = workBook.createFont();
                headfont.setColor(HSSFColor.BLACK.index);
                headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
                headstyle.setFont(headfont);
                //List<String> lst = new ArrayList<String>();
                //List lst = Arrays.asList(new String[]{"1","2","3","4","5","6","7","8","9","10"});
                for (int i = 0; i < sheetHeader.get(m).size(); i++) {
                    HSSFCell headerCell = headerRow.createCell(i);
                    headerCell.setCellStyle(headstyle);
                    // 设置cell的值
                    headerCell.setCellValue(sheetHeader.get(m).get(i).toString());
                    headerCell.setCellStyle(headstyle);
                }

                int rowIndex = 1;
                for (int i = 0; i < sheetData.get(m).size(); i++) {
                    System.out.println("总数:"+sheetData.get(m).size()+"--"+i);
                    List<String> list2 = sheetData.get(m).get(i);
                    HSSFRow row = sheet.createRow(rowIndex);
                    for (int q = 0; q < list2.size(); q++) {
                        // 创建第i个单元格
                        HSSFCell cell = row.createCell(q);
                        System.out.println(String.valueOf(list2.get(q)));
                        cell.setCellValue(String.valueOf(list2.get(q)).replace("未知", ""));
                        sheet.setColumnWidth(q, (80 * 50));
                    }
                    rowIndex++;
                }
                //FileOutputStream fos = new FileOutputStream(fileRealPath);

            }
        FileOutputStream fos = new FileOutputStream(fileRealPath);
//        sheet.setGridsPrinted(true);
//        HSSFFooter footer = sheet.getFooter();
//        footer.setRight("Page " + HSSFFooter.page() + " of "
//                + HSSFFooter.numPages());
        workBook.write(fos);
        fos.close();
    }
}

 上面代码的输出本来在for循环内部,这样在写入本地文件的时候没有问题,当使用servlet强制输出到response中就会出现只能显示第一个sheet的情况,所以需要把强制输出调整到for循环之后。

分享到:
评论

相关推荐

    java_poi实现excel导入导出

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

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

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

    poi多sheet页导出工具类和实例 包含多个excel导出

    总之,这个 poi 多 sheet 导出工具类和实例是处理大量数据导出的有效方法,结合合理的数据分组、公共数据获取类以及优化策略,可以高效地生成多个 sheet 或多个 Excel 文件,满足大规模数据的导出需求。

    poi分多个sheet导出excel

    标题“poi分多个sheet导出excel”所指的就是如何使用POI库来动态地生成多个sheet,并根据设定的阈值(如50000条记录)进行切换。 首先,要使用Apache POI,你需要在项目中引入对应的依赖。如果你使用的是Maven,...

    基于POI的Excel多Sheet页导出导入工具类

    "基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...

    Java poi 实现excel导入导出

    在Java编程环境中,Apache POI库是一个非常重要的工具,它允许开发者读取、写入和修改Microsoft ...通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活运用到实际项目中,实现高效的数据导入导出功能。

    poi多线程大数据导出excel文件.zip

    本项目“poi多线程大数据导出excel文件”提供了一个解决方案,利用多线程来提高Excel的大数据导出效率。 Apache POI 3.1版本是较早的版本,而项目中使用了更新的4.1版本,这意味着它可能利用了更多优化和新特性。在...

    Java利用POI实现数据Excel导出实例源码

    本实例源码着重讲解如何利用Apache POI来实现数据的Excel导出功能。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别...

    java基于poi通过excel模板导出

    在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的...通过学习这些资源,你可以更好地理解和实践上述知识,从而在项目中实现高效且灵活的Excel模板导出功能。

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

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

    poi 基于excel模板导出功能

    本篇将深入探讨如何利用Apache POI实现基于Excel模板的导出功能。 一、Apache POI基本概念 1. HSSF与XSSF:Apache POI提供了两种处理Excel的API,HSSF用于处理.xls(Excel 97-2003)格式,而XSSF则用于处理.xlsx...

    java中使用poi方式分多个sheet导出excel(.xls)并下载(含下载提示)

    a).将数据库中的数据导入excel(2003版.xls)中 b).每个sheet中有数据50000条记录,如果sheet中的记录数&gt;50000,则在新建sheet中导入数据,并且每个sheet都从第一行开始 c).前后台代码都有哦

    POI导出多个sheet工作表Demo

    在“POI导出多个sheet工作表Demo”中,我们将探讨如何利用Apache POI库来创建一个Excel文档,并在其中添加多个工作表,每个工作表可能代表不同的数据模块或分析部分。 首先,我们需要在项目中引入Apache POI库。...

    POI实现excel导入导出

    在本文中,我们将深入探讨如何使用Apache POI库实现Excel的导入和导出功能,这对于处理大量数据和自动化办公流程非常有用。 首先,让我们了解一下Apache POI的核心组件HSSF(Horrible Spreadsheet Format)和XSSF...

    JAVA实现数据库数据导入导出到Excel(POI)所需jar包

    本教程将详细介绍如何使用POI库在Java中实现这一功能,并介绍所需的jar包。 首先,我们需要理解Apache POI的基本概念。POI提供了HSSF(Horrible Spreadsheet Format)用于处理.xls文件,而XSSF用于处理.xlsx文件。...

    java通过poi模板导出excel

    Java通过Apache POI库导出...通过以上步骤,你可以使用Apache POI在Java中实现基于模板的Excel导出功能。在实际项目中,根据需求调整细节,如增加数据验证、公式计算、图表生成等高级特性,以满足复杂的Excel报表需求。

    Java实现POI导出Excel

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

    java基于poi使用excel模板导出

    通过以上步骤,我们可以使用Apache POI实现基于模板的Excel导出功能。在实际应用中,可以结合Spring、MyBatis等框架,实现从数据库中读取数据并填充到模板中,生成报表。同时,也可以扩展模板的解析逻辑,支持更复杂...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。

    java poi导出excel

    下面将详细介绍如何使用Java POI来实现Excel的导出。 1. **引入依赖** 在Java项目中使用POI,首先需要在项目的构建文件(如Maven的pom.xml或Gradle的build.gradle)中添加对应的依赖。对于Maven用户,可以在pom....

Global site tag (gtag.js) - Google Analytics