将多个Sheet导入到同一个Excel文件中

实体类excel

import java.util.List;

/**
 * 功能:
 * 描述:
 * @author
 * @date 2015-3-19 下午5:15:48
 */
public class Excel {
    private String fileName;//sheet的名称
    private String[] handers;//sheet里的标题
    private List<String[]>  dataset;//sheet里的数据集

    /**
     *
     */
    public Excel(String fileName,String[] handers,List<String[]> dataset)
    {
        this.fileName = fileName;
        this.handers = handers;
        this.dataset = dataset;
    }

    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    public String[] getHanders() {
        return handers;
    }
    public void setHanders(String[] handers) {
        this.handers = handers;
    }
    public List<String[]> getDataset() {
        return dataset;
    }
    public void setDataset(List<String[]> dataset) {
        this.dataset = dataset;
    }

}

具体实现

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * 功能:将多个sheet导出到同一个出excel表格中
 * 描述:
 * @author
 * @date 2015-3-19 下午5:20:20
 */
public class test {
    public static void main(String[] args) {
        String data1[] = {"111","2222","3333","44444"};
        String data2[] = {"111","2222","3333","44444","5555"};
        String handers1[] = {"一","二","三","四","五"};
        String handers2[] = {"one","two","three","four","five"};
        String handers3[] = {"车辆","毛衣","手机","茶杯","笔记本"};
        List<String[]> dataset = new ArrayList<String[]>();
        dataset.add(data1);
        dataset.add(data2);

        Excel e1 = new Excel("第一个sheet", handers1, dataset);
        Excel e2 = new Excel("第二个sheet", handers2, dataset);
        Excel e3 = new Excel("第三个sheet", handers3, dataset);

        List<Excel> mysheet = new ArrayList<Excel>();
        mysheet.add(e1);
        mysheet.add(e2);
        mysheet.add(e3);

        test2(mysheet);

    }

    private static void test(){
        List<Object> list = new ArrayList<Object>();
        String[] handers = {"1","2","3","4","5"};
        HSSFWorkbook wb = new HSSFWorkbook();//创建工作薄
        HSSFSheet sheet = wb.createSheet("第一个sheet");//第一个sheet
        HSSFRow rowFirst = sheet.createRow(0);//第一个sheet的第一行为标题
        //写标题
        for(int i=0;i<handers.length;i++){
            //获取第一行的每个单元格
            HSSFCell cell = rowFirst.createCell(i);
            //往单元格里写数据
            cell.setCellValue(handers[i]);
        }
        //写数据集
        //假定数据集诗歌list集合
        for(int i=0;i<list.size();i++){
            //获取list里面存在是数据集对象
            Object obj = list.get(i);
            //创建数据行
            HSSFRow row = sheet.createRow(i+1);
            //设置对应单元格的值
            row.createCell(0).setCellValue("obj 的属性0");
            row.createCell(1).setCellValue("obj 的属性1");
            row.createCell(2).setCellValue("obj 的属性2");
            row.createCell(3).setCellValue("obj 的属性3");
            row.createCell(4).setCellValue("obj 的属性4");
        }
        //写文件
        try {
            OutputStream os = new FileOutputStream(new File("filepath"));
            wb.write(os);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     * 具体sheet的操作
     * @author
     * @date 2015-3-19下午6:12:57
     * @param mysheets void
     */
    private static void test2(List<Excel> mysheets){
        HSSFWorkbook wb = new HSSFWorkbook();//创建工作薄
        List<Excel> sheets = mysheets;
        for(Excel excel:sheets){
            //新建一个sheet
            HSSFSheet sheet = wb.createSheet(excel.getFileName());//获取该sheet名称

            String[] handers = excel.getHanders();//获取sheet的标题名
            HSSFRow rowFirst = sheet.createRow(0);//第一个sheet的第一行为标题
            //写标题
            for(int i=0;i<handers.length;i++){
                //获取第一行的每个单元格
                HSSFCell cell = rowFirst.createCell(i);
                //往单元格里写数据
                cell.setCellValue(handers[i]);
            }

            //写数据集
            List<String[]> dataset = excel.getDataset();
            for(int i=0;i<dataset.size();i++){
                String[] data = dataset.get(i);//获取该对象

                //创建数据行
                HSSFRow row = sheet.createRow(i+1);

                for(int j=0;j<data.length;j++){
                    //设置对应单元格的值
                    row.createCell(j).setCellValue(data[i]);
                }
            }

        }

        // 写文件
        try {
            OutputStream os = new FileOutputStream(new File("D://test.xls"));
            wb.write(os);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
时间: 2024-11-06 10:01:45

将多个Sheet导入到同一个Excel文件中的相关文章

[Python]将Excel文件中的数据导入MySQL

Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已有的数据,还要添加一列,名为“at_company”,值为821. 流程 (1)获取excel文件列表,并根据excel文件名确定之后需要创建的table名: (2)连接mysql (3)创建table (4)插入数据 (5)断开连接 依赖模块 1. xlrd # to read excel fil

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

批量处理txt文本文件到Excel文件中去----java

首发地址:http://blog.csdn.net/u014737138/article/details/38120403 不多说了 直接看代码: 下面的FileFind类首先是找到文件夹下面所有的txt文件,并且获取他们的绝对路径或者相对路径存放在数组中 public class FileFind { @SuppressWarnings("rawtypes") /** * 利用字符串的.endsWith()来判断后缀名 * 利用文件类的.listFiles()来获取一个文件夹下所有文

Java读写Excel文件中数据的简便方法

Java开发项目中经常会碰到处理Excel文件中数据的情况,这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出2010年1月1日(含)之后,并且SELLERID等于18的订单.找到的数据写入order_result.xls文件. Excel文件orders.xls的内容如下: ORDERID CLIENT SELLERID AMOUNT ORDERDATE 1 UJRNP 17 392 2008/11/2 15:28 2 SJCH 6 4802 200

(2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?

在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如何用Apache POI在已有的Excel文件中插入一行新的数据.具体代码,请看下面的例子. import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.

java 写入数据到Excel文件中_Demo

=======第一版:基本功能实现======= import com.google.common.collect.Maps; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io

读取Excel文件中的单元格的内容和颜色

读取Excel文件中的单元格的内容和颜色 先创建一个Excel文件,在A1和A2中随意输入内容,设置A1的字体颜色为红色,A2的背景为黄色.需要 using Excel = Microsoft.Office.Interop.Excel;或者using Microsoft.Excel; string file = @"E:\test.xls"; //测试文件 Excel.Application excel = null; Excel.Workbook wkb = null; try {

如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?

在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如何用Apache POI在已有的Excel文件中插入一行新的数据.具体代码,请看下面的例子. [java] view plain copy import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound

用python读取带密码的excel文件中的数据

用python读取带密码的excel文件中的数据,程序代码如下: #filename:readingxls.py ''' 此程序的作用为:用python读取带密码的excel文件中的数据. 首先通过pip安装xlrd第三方库 pip3 install xlrd 请输入excel文件路径:D:\x1.xls ''' import xlrd path=input("请输入excel文件路径:") workbook=xlrd.open_workbook(path) b=len(workboo