Struts2+Jxl Excel 导出

struts.xml

<package name="default" namespace="" extends="struts-default">
    <action name="exportExcel" class="ExcelExportAction" method="exportExcel">
	<result name="success" type="stream">
	    <param name="contentType">application/vnd.ms-excel;charset=ISO8859-1</param>
    	    <param name="inputName">inputStream</param>
    	    <param name="contentDisposition">attachment;filename="1.xls"</param>
    	    <param name="bufferSize">4096</param>
    	    </result>
    </action>
</package>

ExcelExportAction

public class ExcelExportAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
        public String exportExcel() {  
    	    System.out.println("exportExcel...");
    	    List<Goods> list1 = new ArrayList<Goods>();
		String[] l = list.split(",");
		for (int i = 0; i < l.length; i++) {
		    Goods goods = goodsservice.getgoodsbybh(l[i]);
		    list1.add(goods);
		}
    	   inputStream =  us.getExcelInputStream(list1);
           return "success";  
    }  
    getter、setter方法,,,

service>>>dao>>>imp

@Override
	public InputStream getExcelInputStream(List<Goods> list1) {
		// TODO Auto-generated method stub
		ByteArrayOutputStream out = new ByteArrayOutputStream();   
        putDataOnOutputStream(out,list1);
        return new ByteArrayInputStream(out.toByteArray());
	}
    private void putDataOnOutputStream(OutputStream os,List<Goods> list1) {   
        jxl.write.Label label;   
        WritableWorkbook workbook;   
        try {   
            workbook = Workbook.createWorkbook(os);   
            // 方法一: 使用jxl默认颜色
            WritableFont font = new WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.WHITE);// 字体样式
            WritableCellFormat wcf = new WritableCellFormat(font);
            Color color = Color.decode("#4F81BD"); // 自定义的颜色
            workbook.setColourRGB(Colour.ORANGE, color.getRed(), color.getGreen(), color.getBlue());
            wcf.setBackground(Colour.ORANGE);// 设置单元格的背景颜色
            wcf.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
            
            
            WritableSheet sheet = workbook.createSheet("Sheet1", 0);
            sheet.getSettings().setDefaultColumnWidth(15);  
            
            label = new jxl.write.Label(0, 0, "资产编号(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(1, 0, "资产名称(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(2, 0, "标签编号(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(3, 0, "施工类型(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(4, 0, "工具大类(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(5, 0, "工具小类(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(6, 0, "摆放货品柜(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(7, 0, "库存量(必填)", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(8, 0, "单位", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(9, 0, "类型名称", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(10, 0, "规格型号", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(11, 0, "电压等级", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(12, 0, "资产排序", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(13, 0, "出厂日期", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(14, 0, "生产厂家", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(15, 0, "投入日期", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(16, 0, "保管人", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(17, 0, "对象名称", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(18, 0, "对象说明", wcf);
            sheet.addCell(label);
            label = new jxl.write.Label(19, 0, "备注", wcf);
            sheet.addCell(label);
            
            WritableFont font1 = new WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.NO_BOLD);// 字体样式
            WritableCellFormat wcf1 = new WritableCellFormat(font1);
            wcf1.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
            System.out.println("1");
            for (int i = 0; i < list1.size(); i++) {
            	 label = new jxl.write.Label(0, i+1, list1.get(i).getGoods_bh(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(1, i+1, list1.get(i).getGoods_name(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(2, i+1, list1.get(i).getGoods_bqbh(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(3, i+1, list1.get(i).getGoods_sglx(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(4, i+1, list1.get(i).getGoods_lagerid(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(5, i+1, list1.get(i).getGoods_smallid(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(6, i+1, list1.get(i).getGoods_bfhpg(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(7, i+1, list1.get(i).getGoods_ckl(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(8, i+1, list1.get(i).getGoods_dw(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(9, i+1, list1.get(i).getGoods_lxmc(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(10, i+1, list1.get(i).getGoods_ggxh(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(11, i+1, list1.get(i).getGoods_dydj(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(12, i+1, list1.get(i).getGoods_zcpx(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(13, i+1, list1.get(i).getGoods_ccrq(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(14, i+1, list1.get(i).getGoods_sccj(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(15, i+1, list1.get(i).getGoods_trrq(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(16, i+1, list1.get(i).getGoods_bgr(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(17, i+1, list1.get(i).getGoods_dxmc(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(18, i+1, list1.get(i).getGoods_dxsm(), wcf1);
                 sheet.addCell(label);
                 label = new jxl.write.Label(19, i+1, list1.get(i).getGoods_bz(), wcf1);
                 sheet.addCell(label);
			}
            workbook.write();   
            workbook.close();   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }

JSP

<form action="exportExcel.action" method="get">
    <input type="text" id="list" name="list">
    <input type="submit" id="sub" value="Submit" />
</form>

JS

$("#export").on('click', function(){
		var t = 0;
		var all = "";
		var u = document.getElementsByName("cha");
		for ( var i = 0; i < u.length; i++) {
			if (u[i].checked == true) {
				t++;
				all += u[i].value + ",";
			}
		}
		all = all.substring(0, all.length-1);
		if (t == 0) {
			layer.msg('请勾选要导出的数据!', {icon : 7,shade : [ 0.4, '#000' ],time : 1500});
		}else{
			$("#list").val(all);
			$("#sub").click();
		}
	});

因为ajax好像没用,所以还是选择用form表单提交,因为要传值到后台,所以,在JS里面为表单里的input赋值,并触发submit提交,再在后台接受form表单的值。(记得前台将form表单隐藏起来)

你可能感兴趣的:(struts2,excel导出,Jxl。)