999yzc亚洲城在线娱乐城java 实现execl导出 我应该怎么实现。希望是细致的说法,有完整的实例更好

( 999yzc亚洲城在线娱乐城 )

我现在要做一个execl的导出,所用的.jar我已经弄好了,现在我不知道要怎么实现这个功能,还请细致回答。不要凑数的评论。谢谢大家。
网上的例子都是 半截拉快的 实在不知从哪开始。

我点击按钮之后,到后台,然后怎么弄。。。excel里面的列名字都是自己根据需要写死的吗,还是怎么弄,需要展现的数据,是在先查 还是已经存在一个集合里面直接循环出来了,,,

poi版本。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

Hello World 示例

import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellUtil;

/**
 * @author Kevin Zou kevinz@weghst.com
 */
public class HelloWorld {

    public static void mainString[] args throws Exception {
        Workbook workbook = new HSSFWorkbook;
        Sheet sheet = workbook.createSheet"HELLO";
        Map<String, Object> properties = new HashMap<>;

        // border around a cell
        properties.putCellUtil.BORDER_TOP, CellStyle.BORDER_MEDIUM;
        properties.putCellUtil.BORDER_BOTTOM, CellStyle.BORDER_MEDIUM;
        properties.putCellUtil.BORDER_LEFT, CellStyle.BORDER_MEDIUM;
        properties.putCellUtil.BORDER_RIGHT, CellStyle.BORDER_MEDIUM;
        // Give it a color RED
        properties.putCellUtil.TOP_BORDER_COLOR, IndexedColors.RED.getIndex;
        properties.putCellUtil.BOTTOM_BORDER_COLOR, IndexedColors.RED.getIndex;
        properties.putCellUtil.LEFT_BORDER_COLOR, IndexedColors.RED.getIndex;
        properties.putCellUtil.RIGHT_BORDER_COLOR, IndexedColors.RED.getIndex;

        // Apply the borders to the cell at B2
        Row row = sheet.createRow1;
        Cell cell = row.createCell1;

        for Map.Entry<String, Object> e : properties.entrySet {
            CellUtil.setCellStylePropertycell, workbook, e.getKey, e.getValue;
        }
        cell.setCellValue"First"; // 单元格值

        // Apply the borders to a 3x3 region starting at D4
        for int ix = 3; ix <= 5; ix++ {
            row = sheet.createRowix;
            for int iy = 3; iy <= 5; iy++ {
                cell = row.createCelliy;
                for Map.Entry<String, Object> e : properties.entrySet {
                    CellUtil.setCellStylePropertycell, workbook, e.getKey, e.getValue;
                }

                cell.setCellValueix + " * " + iy; // 单元格值
            }
        }

        FileOutputStream fileOut = new FileOutputStream"C:/helloworld.xls";
        workbook.writefileOut;
        fileOut.close;
        System.out.println"The end.";
    }
}

poi Quick Guide

用 jxl 就行,网上有很多 案例 demo 案例的

例如:

public void QueryExport{
    //查询你需要的数据
    list = yourService.selectExportDatayourParams;
//封装成你需要的格式数据    
List<Map<String,String>> mlist = new ArrayList<Map<String,String>>;
    Iterator it = list.iterator;
    whileit.hasNext{
        BABillProjectStatistics dp = BABillProjectStatistics it.next;
        Map<String,String> map = dp.toMap;
        mlist.addmap;
    }
    String fileName = "当前文件名称";
    String sheetName = "ExcelSheetName";
    //定义列头
    List<String> colList = new ArrayList<String>;
    colList.add"项目编号";
    //如果表列头为动态数据,直接按固定格式,封装在mlist中即可。
    JxlExcelUtils.exportexclehttpServletResponse, fileName, mlist, sheetName, colList;
}

帮助类:

import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import jxl.SheetSettings;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
  
/** 
 * jxl导出excel 
 * @author jamboree 
 * @date  2013-11-28 
 */  
public class JxlExcelUtils {

/** 
 * @author  
 * @param objData 导出内容数组 
 * @param sheetName 导出工作表的名称 
 * @param columns 导出Excel的表头数组 
 * @return 
 */  
public static int exportToExcelHttpServletResponse response, List<Map<String, String>> objData, String sheetName,List<String> columns {  
    int flag = 0;
    //声明工作簿jxl.write.WritableWorkbook  
    WritableWorkbook wwb;
    try {  
        //根据传进来的file对象创建可写入的Excel工作薄  
        OutputStream os = response.getOutputStream;
          
        wwb = Workbook.createWorkbookos;

        /* 
         * 创建一个工作表、sheetName为工作表的名称、"0"为第一个工作表 
         * 打开Excel的时候会看到左下角默认有3个sheet、"sheet1、sheet2、sheet3"这样 
         * 代码中的"0"就是sheet1、其它的一一对应。 
         * createSheetsheetName, 0一个是工作表的名称,另一个是工作表在工作薄中的位置 
         */  
        WritableSheet ws = wwb.createSheetsheetName, 0;
          
        SheetSettings ss = ws.getSettings;
        ss.setVerticalFreeze1;//冻结表头  
        
        WritableFont font1 =new WritableFontWritableFont.createFont"宋体",11 ,WritableFont.BOLD;
        WritableFont font2 =new WritableFontWritableFont.createFont"宋体",11 ,WritableFont.NO_BOLD;
        WritableCellFormat wcf = new WritableCellFormatfont1;
        WritableCellFormat wcf2 = new WritableCellFormatfont2;
        WritableCellFormat wcf3 = new WritableCellFormatfont2;//设置样式,字体  

        //创建单元格样式  
        //WritableCellFormat wcf = new WritableCellFormat;

        //背景颜色  
        wcf.setBackgroundjxl.format.Colour.LIGHT_GREEN;
        wcf.setAlignmentAlignment.CENTRE;//平行居中  
        wcf.setVerticalAlignmentVerticalAlignment.CENTRE;//垂直居中  
        wcf3.setAlignmentAlignment.CENTRE;//平行居中  
        wcf3.setVerticalAlignmentVerticalAlignment.CENTRE;//垂直居中  
        wcf3.setBackgroundColour.WHITE;
        wcf3.setBorderBorder.ALL, BorderLineStyle.THIN;
        wcf2.setAlignmentAlignment.CENTRE;//平行居中  
        wcf2.setVerticalAlignmentVerticalAlignment.CENTRE;//垂直居中  

        /* 
         * 这个是单元格内容居中显示 
         * 还有很多很多样式 
         */  
        wcf.setAlignmentAlignment.CENTRE;

        //判断一下表头数组是否有数据  
        if columns != null && columns.size > 0 {  

            //循环写入表头  
            for int i = 0; i < columns.size; i++ {  

                /* 
                 * 添加单元格Cell内容addCell 
                 * 添加Label对象Label 
                 * 数据的类型有很多种、在这里你需要什么类型就导入什么类型 
                 * 如:jxl.write.DateTime 、jxl.write.Number、jxl.write.Label 
                 * Labeli, 0, columns[i], wcf 
                 * 其中i为列、0为行、columns[i]为数据、wcf为样式 
                 * 合起来就是说将columns[i]添加到第一行行、列下标都是从0开始第i列、样式为什么"色"内容居中 
                 */  
                ws.addCellnew Labeli, 0, columns.geti, wcf;
            }  

            //判断表中是否有数据  
            if objData != null && objData.size > 0 {  
                //循环写入表中数据  
                for int i = 0; i < objData.size; i++ {  

                    //转换成map集合{activyName:测试功能,count:2}  
                    Map<String, String> map = Map<String, String>objData.geti;

                    //循环输出map中的子集:既列值  
                    int j=0;
                    forObject o:map.keySet{  
                        //ps:因为要“”通用”“导出功能,所以这里循环的时候不是get"Name",而是通过map.geto  
                        ws.addCellnew Labelj,i+1,String.valueOfmap.geto,wcf3;
                        j++;
                    }  
                }  
            }else{  
                flag = -1;
            }  

            //写入Exel工作表  
            wwb.write;

            //关闭Excel工作薄对象   
            wwb.close;
              
            //关闭流  
            os.flush;
            os.close;
              
            os =null;
        }  
    }catch IllegalStateException e {  
        System.err.printlne.getMessage;
    }  
    catch Exception ex {  
        flag = 0;
        ex.printStackTrace;
    }  

    return flag;
}  
/** 
 * 下载excel 
 * @author  
 * @param response 
 * @param filename 文件名 ,如:20110808.xls 
 * @param listData 数据源 
 * @param sheetName 表头名称 
 * @param columns 列名称集合,如:{物品名称,数量,单价} 
 */  
public static void exportexcleHttpServletResponse response,String filename,List<Map<String, String>> listData,String sheetName,List<String> columns  
{  
    //调用上面的方法、生成Excel文件  
    response.setContentType"application/vnd.ms-excel";
    //response.setHeader"Content-Disposition", "attachment;filename="+filename;
    try {  
        response.setHeader"Content-Disposition", "attachment;filename=" + new Stringfilename.getBytes"gb2312", "ISO8859-1" + ".xls";

        exportToExcelresponse, listData, sheetName, columns;
    } catch UnsupportedEncodingException e {  
        e.printStackTrace;
    }   
}  

}

直接课程,够细致了吧

我现在都是JS导出Chrome,不过有一个利用Java反射导出Excel的工具类,分享给题主~

Java POI 导出EXCEL经典实现 Java导出ExceL

(看完/读完)这篇文章有何感想! 999yzc亚洲城在线娱乐城的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注