jxl生成Excel表格合并单元格工具类

废话不多说  直接上代码

工具类

package com.hoperun.ccca.common.util;

import java.io.File;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
 * @title ExcelManage.java
 * @description
 * @author zyy
 */

public class ExcelManage {


 @SuppressWarnings("rawtypes")
 public static void writeExcel(OutputStream os,List excelList)
     {
         try
         {
             /**
     * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
     * 因为类WritableWorkbook的构造函数为protected类型
     * method(1)直接从目标文件中读取WritableWorkbook wwb =
     * Workbook.createWorkbook(new File(targetfile));
     * method(2)如下实例所示 将WritableWorkbook直接写入到输出流
     *
     */
             WritableWorkbook wwb = Workbook.createWorkbook(os);
             // 创建Excel工作表 指定名称和位置
             for(int i=0;i<excelList.size();i++)
             {
              ExcelModel eModel=(ExcelModel)excelList.get(i);
              WritableSheet ws = wwb.createSheet(eModel.getSheetName(),i);
              List ls=eModel.getContentList();
              if(ls!=null)
              {
                for(int z=0;z<ls.size();z++)
                {
                 HashMap map=(HashMap)ls.get(z);
                 for(int y=1;y<=map.size();y++)
                 {
                  String cellContent=map.get(y+"").toString();
                  ws.addCell(new Label(y-1,z, cellContent));
                 }
                }
              }
             }
             wwb.write();
             wwb.close();
         }
         catch(Exception e)
         {
             e.printStackTrace();
         }
     }
 
 @SuppressWarnings("rawtypes")
 public static void writeExcel(File file,List excelList)
    {
        try
        {
            /**
    * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
    * 因为类WritableWorkbook的构造函数为protected类型
    * method(1)直接从目标文件中读取WritableWorkbook wwb =
    * Workbook.createWorkbook(new File(targetfile));
    * method(2)如下实例所示 将WritableWorkbook直接写入到输出流
    *
    */
         
            WritableWorkbook wwb = Workbook.createWorkbook(file);
            // 创建Excel工作表 指定名称和位置
            for(int i=0;i<excelList.size();i++)
            {
             ExcelModel eModel=(ExcelModel)excelList.get(i);
             WritableSheet ws = wwb.createSheet(eModel.getSheetName(),i);
             List ls=eModel.getContentList();
             if(ls!=null)
             {
               for(int z=0;z<ls.size();z++)
               {
                HashMap map=(HashMap)ls.get(z);
                for(int y=1;y<=map.size();y++)//循环每一列的内容
                {
                 String cellContent=map.get(y+"").toString();
                 ws.addCell(new Label(y-1,z, cellContent));
                }
               }
             }
            }
            wwb.write();
            wwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 
 @SuppressWarnings("rawtypes")
 public static void writeTrial(File file,List excelList)
    {
        try
        {
            /**
    * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
    * 因为类WritableWorkbook的构造函数为protected类型
    * method(1)直接从目标文件中读取WritableWorkbook wwb =
    * Workbook.createWorkbook(new File(targetfile));
    * method(2)如下实例所示 将WritableWorkbook直接写入到输出流
    *
    */
         
            WritableWorkbook wwb = Workbook.createWorkbook(file);
            // 创建Excel工作表 指定名称和位置
            for(int i=0;i<excelList.size();i++)
            {
             ExcelModel eModel=(ExcelModel)excelList.get(i);
             WritableSheet ws = wwb.createSheet(eModel.getSheetName(),i);
             List ls=eModel.getContentList();
             if(ls!=null)
             {
               for(int z=0;z<ls.size();z++)
               {
                HashMap map=(HashMap)ls.get(z);
                for(int y=1;y<=map.size();y++)//循环每一列的内容
                {
                 String cellContent=map.get(y+"").toString() == null ? "":map.get(y+"").toString();
                 ws.addCell(new Label(y-1,z, cellContent));
                }
               }

            //合并单元格
             ws.mergeCells(0, 0, 0, 1);//设置第一列、第一行和 第一列、第二行合并
               ws.mergeCells(1, 0, 1, 1);//设置第二列、第一行和 第二列、第二行合并
               ws.mergeCells(2, 0, 2, 1);//设置第三列、第一行和 第三列、第二行合并
               ws.mergeCells(3, 0, 4, 0);//设置第四列、第一行和 第五列、第二行合并
             }
            }
            wwb.write();
            wwb.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 
}

public class ExcelModel {

private String sheetName;    //工作表名称

private List contentList;   //工作表

public List getContentList() {
  return contentList;
 }
 public void setContentList(List contentList) {
  this.contentList = contentList;
 }
 public String getSheetName() {
  return sheetName;
 }
 public void setSheetName(String sheetName) {
  this.sheetName = sheetName;
 }

}

猜你喜欢

转载自my.oschina.net/u/3859455/blog/1813098