为什么这样写呢,因为这样写方便修改,不会出太多的乱子!直奔主题:

使用的JXL包

结果:

java通过模板导出word多选勾选框 java按模板导出excel_java通过模板导出word多选勾选框

EXCEL样式:

java通过模板导出word多选勾选框 java按模板导出excel_java_02

页面样式:

java通过模板导出word多选勾选框 java按模板导出excel_List_03

网页页面链接:

location.href = "physical.do?method=InitDownLoad&downLoadPath="+ encodeURIComponent(encodeURIComponent(downLoadPath));

location.href是打开窗口并自动下载,这个很重要

下面是后台代码:

后台代码分了七个类,有6是公共方法为一个类服务,我贴顺序是主要,次要。。。。。

ExcelTool.java

package com.hna.aircrewhealth.excel.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.hna.aircrewhealth.po.AviatorHealthCheck;
import com.hna.aircrewhealth.security.po.Staff;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCell;

import jxl.write.WritableWorkbook;
import jxl.write.WriteException;


public class ExcelTool {

    private static String path = "F:\\luokq\\aircrewhealth\\template\\重大疾病报告单.xls";
    private final static String defaultName = "航医跟班检查记录单.xls";

    public static String getPath() {
        return path;
    }

    public static void setPath(String p) {
        path = p;
    }
  //这个MAIN方法是个DEMO 可以参照这个写法 
    public static void main(String[] arg) {
        AviatorHealthCheck bean = new AviatorHealthCheck();

        bean.setId("3FCB19B440E74DF1BD50CD123A3C087C");
        bean.setHealthCheckFlightNum("NB-38-54321");

        Staff s = new Staff(); //声明一个实体类
        s.setName("王八");     
        bean.setFollowDoctor(s);

        bean.setNoddeid("878787");
        bean.setStartTime("1987-02-25");
        bean.setEndTime("1987-02-25");
        bean.setFollowContext("脸可大饿,打瞌睡,而开发,奥东科咳咳咳什么刺激附近的库斯科到看风景的库斯科,道可服务端");

        Map<String, Object> map = new HashMap<String, Object>();   //声明一个map
        map.put("AviatorHealthCheck", bean);  //将实体放入Map,因为是按Map输出的
/**
*下面这个是循环用的
*/
        List<Object> list = new ArrayList<Object>();

        for (int i = 0; i < 6; i++) {
            bean = new AviatorHealthCheck();

            bean.setId("3FCB19B440E74DF1BD50CD123A3C087C"+"----"+i);
            bean.setHealthCheckFlightNum("NB-38-54321"+"----"+i);

            s = new Staff();
            s.setName("王八"+"----"+i);
            bean.setFollowDoctor(s);

            bean.setNoddeid("878787"+"----"+i);
            bean.setStartTime("1987-02-25"+"----"+i);
            bean.setEndTime("1987-02-25"+"----"+i);
            bean.setFollowContext("脸可大饿,打瞌睡,而开发,奥东科咳咳咳什么刺激附近的库斯科到看风景的库斯科,道可服务端"+"----"+i);
            list.add(bean);
        }
        map.put("listname", list);
        map.put("listname2", list);
/**这是循环结束了*/
        exportExcel(path, map);   //这个最主要,是导出Excel的方法
    }

    /**
     * 导出 Excel
     * 
     * @param template
     *            Excel模板
     * @param datas
     *            数据
     * @return
     */
    public static FileInputStream exportExcel(String template, Map<String, Object> datas) {
        FileInputStream fis = null;
        InputStream is = FileTool.getFileInputStream(template);

        try {
            if (is != null) {
                Workbook book = Workbook.getWorkbook(is);
                File tempFile = File.createTempFile("temp", ".xls");
                
                WritableWorkbook wWorkbook = Workbook.createWorkbook(tempFile, book);

                /** 处理【表达式】类型的数据。 **/
                generateExpData(book, wWorkbook, datas);
                /** 处理【循环结果集】类型的数据。 **/
                generateEachData(book, wWorkbook, datas);

                wWorkbook.write();
                wWorkbook.close();
            
                fis = new FileInputStream(tempFile);
            }
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (WriteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

        return fis;
    }

    public static FileInputStream exportExcel1(String template, Map<String, Object> datas) {
        FileInputStream fis = null;
        InputStream is = FileTool.getFileInputStream(template);

        try {
            if (is != null) {
                Workbook book = Workbook.getWorkbook(is);
                File tempFile = File.createTempFile("temp", ".xls");
                WritableWorkbook wWorkbook = Workbook.createWorkbook(tempFile, book);

                /** 处理【表达式】类型的数据。 **/
                generateExpData1(book, wWorkbook, datas);
                /** 处理【循环结果集】类型的数据。 **/
                generateEachData(book, wWorkbook, datas);

                wWorkbook.write();
                wWorkbook.close();

                fis = new FileInputStream(tempFile);
            }
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (WriteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

        return fis;
    }
    /**
     * 处理【表达式】类型的数据。
     * 
     * @param book
     *            【模板】对象
     * @param wWorkbook
     *            根据模板创建的【新数据文件】对象
     */
    private static void generateExpData(Workbook book, WritableWorkbook wWorkbook, Map<String, Object> datas) throws Exception {
        List<ExcelCells> expcells = search("${", book);
        for (ExcelCells cell : expcells) {
            wWorkbook.getSheet(cell.getSheetIndex()).addCell(getValueByExp(cell, datas));
        }
    }
    
    private static void generateExpData1(Workbook book, WritableWorkbook wWorkbook, Map<String, Object> datas) throws Exception {
        List<ExcelCells> expcells = search("${", book);
        for (ExcelCells cell : expcells) {
            wWorkbook.getSheet(cell.getSheetIndex()).addCell(getValueByExp1(cell, datas));
        }
    }

    /**
     * 处理【循环结果集】类型的数据
     * 
     * @param book
     *            【模板】对象
     * @param wWorkbook
     *            根据模板创建的【新数据文件】对象
     */
    private static void generateEachData(Workbook book, WritableWorkbook wWorkbook, Map<String, Object> datas) throws Exception {
        List<ExcelCells> each = search("each.", book);
        /* 先对模板列对象,进行分组。 */
        Map<String, List<ExcelCells>> map = new LinkedHashMap<String, List<ExcelCells>>();//
        for (ExcelCells cell : each) {
            String[] array = cell.getCell().getContents().trim().split("\\.");
            if (array.length >= 3) {
                List<ExcelCells> list = map.get(array[0] + "." + array[1]);
                if (list == null) {
                    list = new ArrayList<ExcelCells>();
                    map.put(array[0] + "." + array[1], list);
                }
                list.add(cell);
            }
        }

        Iterator<String> iterator = map.keySet().iterator();

        int insertrow = 0;//标识当前工作表新增了多少条数据。
        int lastSheetIndex = -1;//标识上一次工作表的下标。

        while (iterator.hasNext()) {
            List<ExcelCells> list = map.get(iterator.next());
            int sheetIndex = list.get(0).getSheetIndex();// 获取面板下标。
            //当切换工作表事  insertrow 清 0
            if(lastSheetIndex != -1 && lastSheetIndex != sheetIndex) insertrow = 0;
            lastSheetIndex = sheetIndex;
            
            int startRow = list.get(0).getCell().getRow() + insertrow;// 获取开始行下标。

            String[] array = list.get(0).getCell().getContents().trim().split("\\.");
            if (array.length > 0) {
                Object data = datas.get(array[1]);
                if (data != null && !data.getClass().getName().equals(List.class.getName()) && !data.getClass().getName().equals(ArrayList.class.getName())) {
                    throw new Exception("数据:" + array[1] + "不是一个集合类!");
                }
                List<Object> rowsData = (List<Object>) data;
                // 有数据时。
                if (rowsData != null && rowsData.size() > 0) {
                    for (int i = 0; i < rowsData.size(); i++) {
                        /* 第一行数据,覆盖模板位置,所以不需要创建新行 */
                        if (i == 0) {
                            for (ExcelCells cell : list) {
                                wWorkbook.getSheet(sheetIndex).addCell(getValueByEach(cell, rowsData.get(i), startRow, cell.getCell().getColumn()));
                            }
                            continue;
                        }
                        /* 创建新行 */
                        wWorkbook.getSheet(sheetIndex).insertRow(startRow + i);
                        for (ExcelCells cell : list) {
                            wWorkbook.getSheet(sheetIndex).addCell(getValueByEach(cell, rowsData.get(i), startRow + i, cell.getCell().getColumn()));
                        }
                        insertrow++;
                    }

                }
                // 无数据时。
                else {
                    for (ExcelCells cell : list) {
                        wWorkbook.getSheet(sheetIndex).addCell(getValueByEach(cell, null, startRow, cell.getCell().getColumn()));
                    }
                }
            }
        }

    }

    /**
     * 根据【表达式】从数据集中获取相应数据。
     * 
     * @param exp
     *            表达式
     * @param datas
     *            数据集
     * @return
     */
    public static WritableCell getValueByExp(ExcelCells cells, Map<String, Object> datas) {
        WritableCell writableCell = null;

        List<Object> values = new ArrayList<Object>();
        List<String> exps = cells.getExps();// 获取表达式集合。

        String old_c = cells.getCell().getContents();// 模板原内容。

        for (String exp : exps) {

            String[] names = exp.replace("${", "").replace("}", "").split("\\.");

            Object object = null;
            for (String name : names) {
                if (object == null)
                    object = ObjectCustomUtil.getValueByFieldName(name, datas);
                else
                    object = ObjectCustomUtil.getValueByFieldName(name, object);
            }
            // ${asd.sdfa}
            if (!old_c.isEmpty()) {
                while (old_c.indexOf(exp) != -1)
                    old_c = old_c.replace(exp, object.toString());
            }
        }

        writableCell = getWritableCellByObject(cells.getCell().getRow(), cells.getCell().getColumn(), old_c);
        writableCell.setCellFormat(cells.getCell().getCellFormat());

        return writableCell;
    }
    
    /*
     * 这个方法是专门用于驻外机组环境卫生检查
     */
    public static WritableCell getValueByExp1(ExcelCells cells, Map<String, Object> datas) {
        WritableCell writableCell = null;

        List<Object> values = new ArrayList<Object>();
        List<String> exps = cells.getExps();// 获取表达式集合。

        String old_c = cells.getCell().getContents();// 模板原内容。

        for (String exp : exps) {

            String[] names = exp.replace("${", "").replace("}", "").split("\\.");

            Object object = null;
            String checkContentValue = "";
            for (String name : names) {
                if (object == null){
                    object = ObjectCustomUtil.getValueByFieldName(name, datas);
                }else{
                    object = ObjectCustomUtil.getValueByFieldName(name, object);
                }
                if(name.indexOf("checkContent")!=-1){
                    if("0".equals(object.toString())){
                        checkContentValue = "符合";
                    }else if("1".equals(object.toString())){
                        checkContentValue = "不符合";
                    }else{
                        checkContentValue = "未检查";
                    }
                }else if(name.indexOf("checkTime")!=-1){
                     Date date = (Date)object;
                     checkContentValue = date.getYear()+"年"+ (date.getMonth()+1) +"月" +date.getDate();
                }
            }
            
            if (!old_c.isEmpty()) {
                while (old_c.indexOf(exp) != -1){
                    if("".equals(checkContentValue)){
                        old_c = old_c.replace(exp, object.toString());
                    }else{
                        old_c = old_c.replace(exp, checkContentValue);
                    }
                }
            }
        }

        writableCell = getWritableCellByObject(cells.getCell().getRow(), cells.getCell().getColumn(), old_c);
        writableCell.setCellFormat(cells.getCell().getCellFormat());

        return writableCell;
    }

    /**
     * 根据【Each表达式】从数据集中获取相应数据。
     * 
     * @param exp
     *            表达式
     * @param datas
     *            数据集
     * @return
     */
    public static WritableCell getValueByEach(ExcelCells cells, Object datas, int rows, int column) {
        WritableCell writableCell = null;

        if (datas != null) {
            List<Object> values = new ArrayList<Object>();
            String[] exps = cells.getCell().getContents().trim().split("\\.");// 获取表达式集合。

            Object object = null;
            for (int i = 2; i < exps.length; i++) {
                if (object == null)
                    object = ObjectCustomUtil.getValueByFieldName(exps[i], datas);
                else
                    object = ObjectCustomUtil.getValueByFieldName(exps[i], object);
            }
            writableCell = getWritableCellByObject(rows, column, object);
        } else {
            writableCell = getWritableCellByObject(rows, column, null);
        }
        writableCell.setCellFormat(cells.getCell().getCellFormat());

        return writableCell;
    }

    /**
     * 【未实现】
     * 
     * @param beginRow
     * @param beginColumn
     * @param heads
     * @param result
     * @return
     */
    public static synchronized String customExportExcel(int beginRow, int beginColumn, Map heads, List result) {
        return null;
    }

    /**
     * 根据提供的【列标】、【行标】、【对象值】构建一个Excel列对象。
     * 
     * @param beginRow
     *            【行标】
     * @param beginColumn
     *            【列标】
     * @param obj
     *            【对象值】
     * @return
     */
    public static WritableCell getWritableCellByObject(int beginRow, int beginColumn, Object obj) {
        WritableCell cell = null;

        if (obj == null)
            return new Label(beginColumn, beginRow, "");
        if (obj.getClass().getName().equals(String.class.getName())) {
            cell = new Label(beginColumn, beginRow, obj.toString());
        } else if (obj.getClass().getName().equals(int.class.getName()) || obj.getClass().getName().equals(Integer.class.getName())) {
            // jxl.write.Number
            cell = new Number(beginColumn, beginRow, Integer.parseInt(obj.toString()));
        } else if (obj.getClass().getName().equals(float.class.getName()) || obj.getClass().getName().equals(Float.class.getName())) {
            cell = new Number(beginColumn, beginRow, Float.parseFloat(obj.toString()));
        } else if (obj.getClass().getName().equals(double.class.getName()) || obj.getClass().getName().equals(Double.class.getName())) {
            cell = new Number(beginColumn, beginRow, Double.parseDouble(obj.toString()));
        } else if (obj.getClass().getName().equals(long.class.getName()) || obj.getClass().getName().equals(Long.class.getName())) {
            cell = new Number(beginColumn, beginRow, Long.parseLong(obj.toString()));
        } else if (obj.getClass().getName().equals(Date.class.getName())) {
            cell = new DateTime(beginColumn, beginRow, (Date)obj);
        } else {
            cell = new Label(beginColumn, beginRow, obj.toString());
        }
        return cell;
    }

    /**
     * 查找某字符第一次出现的位置。
     * 
     * @param text
     *            【文本】
     * @param book
     *            【Excel对象】
     * @return
     */
    public static ExcelCells searchFirstText(String text, Workbook book) {
        ExcelCells Rcell = null;
        Sheet[] sheets = book.getSheets();
        if (sheets != null) {
            int sheetIndex = 0;
            for (Sheet sheet : sheets) {
                if (sheet != null) {
                    int rows = sheet.getRows();
                    if (rows > 0) {
                        for (int i = 0; i < rows; i++) {
                            Cell[] cells = sheet.getRow(i);
                            if (cells != null) {
                                for (Cell cell : cells) {
                                    if (cell != null && !StringUtils.isNull(cell.getContents())) {
                                        String contents = cell.getContents();
                                        if (contents.equals(text))
                                            return new ExcelCells(sheet, cell, sheetIndex);
                                    }
                                }
                            }
                        }
                    }
                }
                sheetIndex++;
            }
        }
        return Rcell;
    }

    /**
     * 查找包含某字符所有的列对象。
     * 
     * @param text
     *            【文本】
     * @param book
     *            【Excel对象】
     * @return
     */
    public static List<ExcelCells> search(String text, Workbook book) {
        List<ExcelCells> rcells = new ArrayList<ExcelCells>();

        Sheet[] sheets = book.getSheets();
        if (sheets != null)
            for (Sheet sheet : sheets) {
                if (sheet != null) {
                    int rows = sheet.getRows();
                    if (rows > 0) {
                        for (int i = 0; i < rows; i++) {
                            Cell[] cells = sheet.getRow(i);
                            if (cells != null) {
                                for (Cell cell : cells) {
                                    if (cell != null && !StringUtils.isNull(cell.getContents())) {
                                        String contents = cell.getContents();
                                        if (contents.indexOf(text) != -1)
                                            rcells.add(new ExcelCells(sheet, cell));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        return rcells;
    }

}

DateTool.java

package com.hna.aircrewhealth.excel.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTool {
    public static Date parse(String string) {
        try {
            DateFormat format = DateFormat.getDateInstance();
            return format.parse(string);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取当前日期时间
     * 
     * @return
     */
    public static String getTodayTime() {
        Date sellTime = new Date();

        Calendar cal = Calendar.getInstance();
        cal.setTime(sellTime);
        System.out.println(cal.toString());
        DateFormat format = DateFormat.getDateInstance();

        System.out.println(format.format(sellTime));
        return null;
    }

    /**
     * 获取当天日期(短日期)
     * 
     * @return
     */
    public static String getTodayDate() {
        Date sellTime = new Date();
        SimpleDateFormat dateformat1 = new SimpleDateFormat("yyyy-MM-dd");
        return dateformat1.format(sellTime);
    }

    public static String getMonth_day(Date date, String str) {
        if (str == null)
            str = "/";
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        return (cal.get(Calendar.MONTH) + 1) + str + cal.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取当天日期(长日期)
     * 
     * @return
     */
    public static String getTodayDateLong() {
        Date sellTime = new Date();
        SimpleDateFormat dateformat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateformat1.format(sellTime);
    }

    /**
     * 获取当前年份
     * 
     * @author zl 2011-10-24
     * @return
     */
    public static int currentYear() {

        Calendar cal = Calendar.getInstance();

        int year = cal.get(Calendar.YEAR);
        // int month = cal.get(Calendar.MONTH )+1;

        // System.out.println(year + " 年 " + month + " 月");

        return year;
    }

    /**
     * 将日期格式化
     * 
     * @param date
     * @param arg
     * @return
     */
    public static String format(Date date, String arg) {
        if (date == null)
            return null;
        if (arg == null)
            arg = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(arg);
        return sdf.format(date);
    }

    public static Date stringToDate(String str) throws ParseException {
        if (str.split("-").length == 2) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            return sdf.parse(str);
        } else if(str.split("-").length == 1){ 
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
            return sdf.parse(str);
        } else{
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.parse(str);
        }

    }

    //计算俩个日期之间有多少天
    public static int countDays(String begin,String end){
          int days = 0;
          
          DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
          Calendar c_b = Calendar.getInstance();
          Calendar c_e = Calendar.getInstance();
          
          try{
           c_b.setTime(df.parse(begin));
           c_e.setTime(df.parse(end));
           
           while(c_b.before(c_e)){
            days++;
            c_b.add(Calendar.DAY_OF_YEAR, 1);
           }
           
          }catch(ParseException pe){
           System.out.println("日期格式必须为:yyyy-MM-dd;如:2010-4-4.");
          }
          
          return days; 
        } 
    
    //计算当前距离当前日期之后的某个日期
    public static String addCalendarDay(Date calDate, long addDate) {
        long time = calDate.getTime();
        addDate = addDate * 24 * 60 * 60 * 1000;
        time += addDate;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateFormat.format(new Date(time));
    }
    
    public static Date addDay(Date calDate, long addDate) {
        long time = calDate.getTime();
        addDate = addDate * 24 * 60 * 60 * 1000;
        time += addDate;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return new Date(time);
    }
    
    //计算距离执行日期提前多少天的日期
    public static Date reduceDay(Date calDate, long addDate) {
        long time = calDate.getTime();
        addDate = addDate * 24 * 60 * 60 * 1000;
        time -= addDate;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return new Date(time);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // DateTool.getTodayTime();
        // DateTool.currentYear();

        try {
            //System.out.println(DateTool.stringToDate("2001-10-10"));
            Date date=new Date();
            System.out.println(DateTool.addCalendarDay(date,1));
            //System.out.println(DateTool.countDays("2012-4-10","2012-4-24"));
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

日期类型的转换哈

ExcelCells.java

package com.hna.aircrewhealth.excel.utils;

import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;

public class ExcelCells {
    public final static String regex = "\\$\\{[^\\}]+\\}";
    private Sheet sheet ;
    private Cell cell ;
    private int sheetIndex;
    
    public ExcelCells(){}

    public ExcelCells(Sheet sheet,Cell cell){
        this.sheet = sheet;
        this.cell = cell;
    }
    public ExcelCells(Sheet sheet,Cell cell,int sheetIndex){
        this.sheet = sheet;
        this.cell = cell;
        this.sheetIndex = sheetIndex;
    }
    
    public Sheet getSheet() {
        return sheet;
    }
    public void setSheet(Sheet sheet) {
        this.sheet = sheet;
    }
    public Cell getCell() {
        return cell;
    }
    public void setCell(Cell cell) {
        this.cell = cell;
    }
    public int getSheetIndex() {
        return sheetIndex;
    }
    public void setSheetIndex(int sheetIndex) {
        this.sheetIndex = sheetIndex;
    }

    /**
     * 获取当前列当中【表达式】集合
     * @return
     */
    public List<String> getExps(){
        List<String> list = new ArrayList<String>();
        if(this.cell!=null){
            String contents = this.cell.getContents();
            if(!contents.isEmpty()){
                list = StringUtils.search(this.regex, contents);
            }
        }
        return list;
    }
    
    public String getFomatContext(){
        String contents = this.cell.getContents();
        //while(contents.)
        return contents;
    }
    
}

ExcelTemplate.java

package com.hna.aircrewhealth.excel.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExcelTemplate {
    private List heads = new ArrayList();//模型表头
    private List eachs = new ArrayList();//模型表数据
    private List beans = new ArrayList();//一般的数据集合
    
}

FileTool.java

package com.hna.aircrewhealth.excel.utils;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

import javax.servlet.http.HttpServletResponse;

public class FileTool {
    public static File createfile(String path) {
        File file = new File(path);
        return file;
    }

    public static boolean isExist(String path) {
        File file = new File(path);
        return file.exists();
    }

    public static InputStream getFileInputStream(String path) {
        try {
            if (isExist(path)) {
                InputStream is = new FileInputStream(path);
                return is;
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public static void downLoad(String filePath, HttpServletResponse response, boolean isOnLine, String newname) throws Exception {
        File f = new File(filePath);
        if (!f.exists()) {
            response.sendError(404, "File not found!");
            return;
        }
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;

        response.reset(); // 非常重要
        if (isOnLine) { // 在线打开方式
            URL u = new URL("file:///" + filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename=" + new String(newname.getBytes("gb2312"), "iso8859-1"));
            // 文件名应该编码成UTF-8
        } else { // 纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String(newname.getBytes("gb2312"), "iso8859-1"));
        }
        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }

    public static void downLoad(InputStream f, HttpServletResponse response, String newname) throws Exception {

        if (f == null) {
            response.sendError(404, "File not found!");
            return;
        }

        BufferedInputStream br = new BufferedInputStream(f);
        byte[] buf = new byte[1024];
        int len = 0;

        response.reset(); // 非常重要
        // 纯下载方式
        response.setContentType("application/x-msdownload");
        response.setHeader("Content-Disposition", "attachment; filename=" + newname);

        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }

    /**
     * 在线看文件
     * 
     * @param filePath
     * @param fileType
     * @param response
     * @param newname
     * @throws Exception
     */
    public static void viewfile(String filePath, String ContentType, HttpServletResponse response, String newname) throws Exception {
        File f = new File(filePath);
        if (!f.exists()) {
            response.sendError(404, "File not found!");
            return;
        }
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;

        response.reset(); // 非常重要
        // 在线打开方式
        URL u = new URL("file:///" + filePath);
        // response.setContentType(u.openConnection().getContentType());

        response.setContentType(ContentType);

        // response.setContentType("application/vnd.ms-excel; charset=gb2312");

        response.setHeader("Content-Disposition", "inline; filename=" + new String(newname.getBytes("gb2312"), "iso8859-1"));

        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }

    /**
     * 把文本编码为Html代码
     * 
     * @param target
     * @return 编码后的字符串
     */
    public static String htmEncode(String target) {
        StringBuffer stringbuffer = new StringBuffer();
        int j = target.length();
        for (int i = 0; i < j; i++) {
            char c = target.charAt(i);
            switch (c) {
            case 60:
                stringbuffer.append("<");
                break;
            case 62:
                stringbuffer.append(">");
                break;
            case 38:
                stringbuffer.append("&");
                break;
            case 34:
                stringbuffer.append(""");
                break;
            case 169:
                stringbuffer.append("©");
                break;
            case 174:
                stringbuffer.append("®");
                break;
            case 165:
                stringbuffer.append("¥");
                break;
            case 8364:
                stringbuffer.append("€");
                break;
            case 8482:
                stringbuffer.append("™");
                break;
            case 13:
                if (i < j - 1 && target.charAt(i + 1) == 10) {
                    stringbuffer.append("<br>");
                    i++;
                }
                break;
            case 32:
                if (i < j - 1 && target.charAt(i + 1) == ' ') {
                    stringbuffer.append("  ");
                    i++;
                    break;
                }
            default:
                stringbuffer.append(c);
                break;
            }
        }
        return new String(stringbuffer.toString());
    }

    public static void main(String[] arg) {
        File file = new File("F:\\js\\json_parse.js");
        BakFile(file);

    }

    /**
     * 备份一个文件
     * 
     * @param file
     */
    public static void BakFile(File file) {
        if (file.isFile()) {
            String filename = file.getName();
            String p = file.getParent();
            String newfilename = p + "\\bak." + filename;
            
            File bakfile = createfile(newfilename);
            CopyFile(file, bakfile);
        }
    }

    public static void CopyFile(File oldFile, File newFile) {
        FileInputStream input = null;
        FileOutputStream output = null;
        try {
            input = new FileInputStream(oldFile);
            output = new FileOutputStream(newFile);

            byte[] buffer = new byte[4096];
            int n = 0;
            while (-1 != (n = input.read(buffer))) {
                output.write(buffer, 0, n);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (input != null) {
                    input.close();
                }
                if (output != null) {
                    output.close();
                }
            } catch (IOException ioe) {
                // ignore
            }
        }

    }
    
    public static void CompressJS(File file,String newname){
        
//        Runtime.getRuntime().exec(commandStr)
    }

}

ObjectCustomUtil.java

package com.hna.aircrewhealth.excel.utils;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ObjectCustomUtil {
    public static Field[] getAllFields(Class cl) {
        Field[] field = cl == null ? null : cl.getDeclaredFields();
        return field;
    }

    public static Field getFieldByName(Class cl, String name) throws Exception {
        if (name == null || name.equals(""))
            return null;

        Field field = cl == null ? null : cl.getDeclaredField(name);
        return field;
    }

    /**
     * 根据属性对象获取属性值
     * 
     * @param field
     * @param obj
     * @return
     */
    public static Object getValueByField(Field field, Object obj) {
        Object result = null;
        try {
            String name = field.getName();
            String stringLetter = name.substring(0, 1).toUpperCase();
            String getName = "get" + stringLetter + name.substring(1);
            Method getmethod0 = obj.getClass().getMethod(getName);
            result = getmethod0.invoke(obj);

        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 根据属性名称获取属性值
     * 
     * @param name
     * @param obj
     * @return
     */
    public static Object getValueByFieldName(String name, Object obj) {
        Object result = null;
        try {
            if (obj.getClass().getName().equals(Map.class.getName()) || obj.getClass().getName().equals(HashMap.class.getName())) {
                return ((Map) obj).get(name);
            }
            String stringLetter = name.substring(0, 1).toUpperCase();
            String getName = "get" + stringLetter + name.substring(1);
            Method getmethod0 = obj.getClass().getMethod(getName);
            result = getmethod0.invoke(obj);

        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 根据属性,给对象赋值
     * 
     * @param name
     * @param obj
     * @return
     */
    public static Object setValueByField(Field field, Object bean, Object value) {
        Object result = null;
        try {
            String name = field.getName();
            String stringLetter = name.substring(0, 1).toUpperCase();
            String setName = "set" + stringLetter + name.substring(1);
            Method method = bean.getClass().getMethod(setName, field.getType());
            if (method != null) {
                if (value.getClass().getName().equals("org.json.JSONObject$Null")) {
                } else if (field.getType().getName().equals(String.class.getName())) {
                    method.invoke(bean, value.toString());
                } else if (field.getType().getName().equals(int.class.getName()) || field.getType().getName().equals(Integer.class.getName())) {
                    method.invoke(bean, Integer.parseInt(StringUtils.isNull(value.toString()) ? "0" : value.toString()));
                } else if (field.getType().getName().equals(float.class.getName()) || field.getType().getName().equals(Float.class.getName())) {
                    method.invoke(bean, Float.parseFloat(StringUtils.isNull(value.toString()) ? "0" : value.toString()));
                } else if (field.getType().getName().equals(double.class.getName()) || field.getType().getName().equals(Double.class.getName())) {
                    method.invoke(bean, Double.parseDouble(StringUtils.isNull(value.toString()) ? "0" : value.toString()));
                } else if (field.getType().getName().equals(long.class.getName()) || field.getType().getName().equals(Long.class.getName())) {
                    method.invoke(bean, Long.parseLong(StringUtils.isNull(value.toString()) ? "0" : value.toString()));
                } else if (field.getType().getName().equals(Date.class.getName())) {
                    method.invoke(bean, StringUtils.isNull(value.toString()) ? null : DateTool.parse(value.toString()));
                } else if (field.getType().getName().equals(BigDecimal.class.getName())) {
                    method.invoke(bean, StringUtils.isNull(value.toString()) ? null : BigDecimal.valueOf(Double.parseDouble(value.toString())));
                } else {
                    method.invoke(bean, value);
                }
            }
            return bean;
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

    public static String getSimpleNameByClassName(String classname) {

        try {
            return Class.forName(classname).getSimpleName();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] arg) {
        // Field[] fields = getAllFields(Aircrafttype.class);
        //
        // for (Field f : fields) {
        // System.out.println("name=\"" + f.getName() + "\"");
        // }
        // Aircrafttype arg0 = new Aircrafttype();
        // arg0.setAircraftModel("aaa");
        // arg0.setAircrafttypeId(1234);
        //
        // Aircrafttype arg1 = new Aircrafttype();
        // // arg1.setAircraftModel("aaa");
        // arg1.setAircrafttypeId(1235);
        // // arg0.getAircraftSize()
        // copyNotNull(arg0, arg1);
        // try {
        // // System.out.println(ObjectPropertyCompare(arg0, arg1));
        // } catch (Exception e) {
        // // TODO Auto-generated catch block
        // e.printStackTrace();
        // }
    }

    /**
     * 对象属性比较,确保两对象属于同一类型
     * 
     * @param arg0
     * @param arg1
     * @return
     */
    public static List<String> ObjectPropertyCompare(Object arg0, Object arg1) throws Exception {
        List<String> result = null;

        if (!arg0.getClass().getName().equals(arg1.getClass().getName())) {
            throw new Exception("两个对象不是同一类型,没法比较");
        }
        Field[] fields = getAllFields(arg0.getClass());
        if (fields != null && fields.length > 0)
            result = new ArrayList<String>();
        for (Field f : fields) {
            String name = f.getName();
            String stringLetter = name.substring(0, 1).toUpperCase();
            String getName = "get" + stringLetter + name.substring(1);
            Method method = arg0.getClass().getMethod(getName);

            Object value0 = method.invoke(arg0);
            Object value1 = method.invoke(arg1);

            if (value0 == null && value1 == null) {
            } else if (value0 == null && value1 != null) {
                if (value1.getClass().getName().equals(String.class.getName())) {
                    if (StringUtils.isNull(value1.toString())) {
                        continue;
                    }
                }
                result.add(name);
            } else if (value0 != null && value1 == null) {
                if (value0.getClass().getName().equals(String.class.getName())) {
                    if (StringUtils.isNull(value0.toString())) {
                        continue;
                    }
                }
                result.add(name);
            } else if (!value0.equals(value1))
                result.add(name);
        }

        return result;
    }

    /**
     * 对象属性复制(只为为空的属性复制)
     * 
     * @param arg0
     *            被复制对象
     * @param arg1
     *            复制原对象
     * @return
     */
    public static Object copyNotNull(Object arg0, Object arg1) {
        // arg1.getClass().getDeclaredFields();
        Field[] fields = getAllFields(arg1.getClass());

        try {
            for (Field f : fields) {
                String typename = f.getType().getName();
                Field f0 = null;
                try {
                    f0 = arg0.getClass().getDeclaredField(f.getName());
                } catch (NoSuchFieldException e) {
                    continue;
                }
                String name = f.getName();
                String stringLetter = name.substring(0, 1).toUpperCase();

                String getName = "get" + stringLetter + name.substring(1);
                String setName = "set" + stringLetter + name.substring(1);
                try {
                    Method setmethod1 = arg1.getClass().getMethod(setName, f.getType());
                    Method getmethod1 = arg1.getClass().getMethod(getName);

                    Method getmethod0 = arg0.getClass().getMethod(getName);

                    if (typename.equals(int.class.getName()) || typename.equals(Integer.class.getName()) || typename.equals(float.class.getName()) || typename.equals(Float.class.getName()) || typename.equals(double.class.getName()) || typename.equals(Double.class.getName())) {

                        if (getmethod1.invoke(arg1).equals(0) && f0 != null && f.getType().getName().equals(f0.getType().getName())) {
                            setmethod1.invoke(arg1, getmethod0.invoke(arg0));
                        }
                    } else if (getmethod1.invoke(arg1) == null) {
                        if (f0 != null && f.getType().getName().equals(f0.getType().getName())) {
                            setmethod1.invoke(arg1, getmethod0.invoke(arg0));
                        }
                    }
                } catch (NoSuchMethodException e) {
                    // TODO Auto-generated catch block
                    // e.printStackTrace();
                }
            }
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // System.out.println("");

        return arg1;
    }
}

StringUtils.java

 

package com.hna.aircrewhealth.excel.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtils {
    /**
     * 查找一个字符串在数组中的索引值
     * 
     * @param data
     * @param string
     * @return
     */
    public static int searchIndex(String[] data, String string) {
        if (data == null || data.length == 0)
            return -1;
        for (int i = 0; i < data.length; i++) {
            if ((data[i] != null && data[i].equals(string)) || (data[i] == null && string == null)) {
                return i;
            }
        }
        return -1;
    }

    public static boolean isNull(String string) {
        if (string == null || string.equals(""))
            return true;
        return false;
    }

    public static String arrayToString(List<String> list, String split) {
        if (list == null || list.size() == 0)
            return null;

        String result = "";
        if (isNull(split))
            split = ",";

        for (String str : list) {
            result += str + split;
        }
        result = result.substring(0, result.length() - 1);
        return result;
    }

    public static String arrayToString(String[] list, String split) {
        if (list == null || list.length == 0)
            return null;

        String result = "";
        if (isNull(split))
            split = ",";

        for (String str : list) {
            result += str + split;
        }
        result = result.substring(0, result.length() - 1);
        return result;
    }

    public static String getFileName(String name) {
        if (isNull(name))
            return null;

        if (name.lastIndexOf("\\") != -1) {
            name = name.substring(name.lastIndexOf("\\") + 1, name.length());
        } else if (name.lastIndexOf("/") != -1) {
            name = name.substring(name.lastIndexOf("/") + 1, name.length());
        }

        return name;
    }

    public static String getExtensionName(String name) {
        if (isNull(name))
            return null;
        if (name.lastIndexOf(".") != -1) {
            return name.substring(name.lastIndexOf(".") + 1);
        }
        return "";
    }

    public static void main(String[] arg0) {
        String a = "${bean.aid} sdfad ${xx.yy}sfdd";

        String regex = "";

        search(regex, a);
    }

    public static String getUID() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }

    /**
     * 查找【正则表达式】描述的内容。
     * @param regex
     * @param string
     * @return
     */
    public static List<String> search(String regex, String string) {
        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile(regex);

        Matcher m = p.matcher(string);
        while (m.find()) {
            String g = m.group();
            list.add(g);
        }
        return list;
    }
}

代码贴完了,至于下载

下面是我自己写的可以参照 一下,Excel生成并下载

ccAction.java 方法

@RequestMapping(params = "method=InitExport", method = RequestMethod.GET)
    public @ResponseBody String InitExport(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException, JSONException{
        String parameter=URLDecoder.decode(request.getParameter("parameter"),"UTF-8"); 
        JSONObject jsonObj=new JSONObject(parameter);
        Map<String,Object> map=new HashMap<String,Object>();
        String path = request.getSession().getServletContext().getRealPath("/")+ "ExcelTemplate" +"\\招飞初检.xls";
        Physical physical=new Physical();
        physical.setCompany(jsonObj.get("company").toString());
        physical.setDateTimes(jsonObj.get("dateTime").toString());
//        String area= hnabaseCityBO.findoneById(jsonObj.get("area").toString()).getBaseChn();
        physical.setArea(jsonObj.optString("area"));//
        physical.setRealNumber(jsonObj.get("realNumber").toString());
        physical.setPassNumber(jsonObj.get("passNumber").toString());
        physical.setEndYield(jsonObj.get("endYield").toString());
        physical.setDoctors(jsonObj.get("doctorInit").toString());//
        physical.setComment(jsonObj.get("comment").toString());
        map.put("physical", physical);
//        ExcelTool.exportExcel(path, map);
        OutputStream out=null;
        BufferedOutputStream bos=null;
        BufferedInputStream bis=null;
        InputStream in=null;
        try{
        in=ExcelTool.exportExcel(path, map);
        bis=new BufferedInputStream(in);
        response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode("招飞初检.xls", "UTF-8"));//设置头文件  可参照 
        byte[] data=new byte[1024];
        int bytes=0;
        out=response.getOutputStream();
        bos=new BufferedOutputStream(out);
        while((bytes=bis.read(data, 0, data.length))!=-1){
            bos.write(data,0,bytes);                                        //写出文件流                                     
        }
        bos.flush();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                bos.close();
                out.close();
                bis.close();
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
        return "success";
        
    }

其中有一个循环的,下面代码也给出来吧

 

java通过模板导出word多选勾选框 java按模板导出excel_java通过模板导出word多选勾选框_04

 each代表循环

代码完毕!