通过poi导出excel

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;

 public ActionForm exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 
    		throws Exception {
    	
    	String filename="excel文档";
    	String data=request.getParameter("data");
    	String[] ids = data.split(",");
    	List<KmAgreementSign> listMain=getServiceImp(request).findByPrimaryKeys(ids);
    	OutputStream os = response.getOutputStream();// 取得输出流
		response.reset();// 清空输出流
		response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB2312"), "iso8859_1") + ".xls");// 设定输出文件头
		response.setContentType("application/msexcel");// 定义输出类型
		
		
		HSSFWorkbook wb=new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("合同签订2");
		// 设置单元格宽度
		sheet.setDefaultRowHeightInPoints(20);//设置默认高度
		sheet.setColumnWidth(0, 120*25);
		sheet.setColumnWidth(1, 350*25);
		for (int i = 2; i < 6; i++) {
			sheet.setColumnWidth(i, 120*25);
		}
		sheet.setColumnWidth(6, 350*25);
		sheet.setColumnWidth(7, 120*25);
		sheet.setColumnWidth(8, 120*25);
		sheet.setColumnWidth(9, 220*25);
		
		//第一行
		HSSFRow row = sheet.createRow(0);
		createCell(wb, row, (short)0, "序号","1");
		createCell(wb, row, (short)1, "合同标题","1");
		createCell(wb, row, (short)2, "合同编号","1");
		createCell(wb, row, (short)3, "是否我方先签署","1");
		createCell(wb, row, (short)4, "印章类型","1");
		createCell(wb, row, (short)5, "印章名称","1");
		createCell(wb, row, (short)6, "印章所属主体","1");
		createCell(wb, row, (short)7, "合同状态","1");
		createCell(wb, row, (short)8, "合同用印人","1");
		createCell(wb, row, (short)9, "用印时间","1");
		//luow 添加
		createCell(wb, row, (short)10, "合同自编号","1");
		createCell(wb, row, (short)11, "我方签约主体","1");
		createCell(wb, row, (short)12, "相对方信息","1");
		
		
		//合并单元格,这里可以去调整你想要的格子样式
		sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));
		sheet.addMergedRegion(new CellRangeAddress(0,1,1,1));
		sheet.addMergedRegion(new CellRangeAddress(0,1,2,2));
		sheet.addMergedRegion(new CellRangeAddress(0,1,3,3));
		sheet.addMergedRegion(new CellRangeAddress(0,1,4,4));
		sheet.addMergedRegion(new CellRangeAddress(0,1,5,5));
		sheet.addMergedRegion(new CellRangeAddress(0,1,6,6));
		sheet.addMergedRegion(new CellRangeAddress(0,1,7,7));
		sheet.addMergedRegion(new CellRangeAddress(0,1,8,8));
		sheet.addMergedRegion(new CellRangeAddress(0,1,9,9));
		//luow添加
		sheet.addMergedRegion(new CellRangeAddress(0,1,10,10));
		sheet.addMergedRegion(new CellRangeAddress(0,1,11,11));
		sheet.addMergedRegion(new CellRangeAddress(0,1,12,12));
		
		//第三行
		int sheetcount=2;//行数
		for (int i = 0; i < listMain.size(); i++) {
			KmAgreementSign kms=listMain.get(i);
			KmAgreementApply kma =(KmAgreementApply) getKmAgreementServiceImp().findByPrimaryKey(kms.getFdApply().getFdId());
			HSSFRow row2 = sheet.createRow(i+2);
			row2.createCell(0).setCellValue(i+1);
			createCell(wb, row2, (short)1, kma.getDocSubject(),"2");
			
			createCell(wb, row2, (short)2, kma.getDocNumber(),"2");
			String fdSignBefore = EnumerationTypeUtil.getColumnEnumsLabel("km_agreement_yesno", kms.getFdSignBefore());
			createCell(wb, row2, (short)3, fdSignBefore,"2");//是否我方先签署
			String fdSealType = "";
			if("01".equals(kms.getFdSealType())){
				fdSealType = "实体章";
			}else if("02".equals(kms.getFdSealType())){
				fdSealType = "电子签章";
			}else if("03".equals(kms.getFdSealType())){
				fdSealType = "防伪章";
			}
			createCell(wb, row2, (short)4, fdSealType,"2");//印章类型
			createCell(wb, row2, (short)5, kms.getFdSignature()==null?"":kms.getFdSignature().getFdMarkName(),"2");//印章名称
			createCell(wb, row2, (short)6, kms.getFdSealMain()==null?"":kms.getFdSealMain(),"2");//印章所属主体
			String docStatusTxt = EnumerationTypeUtil.getColumnEnumsLabel("km_agreement_doc_status1", kms.getFdApply().getDocStatus());
			createCell(wb, row2, (short)7, docStatusTxt,"2");//合同状态
			createCell(wb, row2, (short)8, kma.getFdManager().getFdName(),"2");
			String createTime = DateUtil.convertDateToString(kms.getDocCreateTime(), "yyyy-MM-dd");
			createCell(wb, row2, (short)9, createTime,"2");
			//luow 添加合同自编号,相对方信息,签约主体
			createCell(wb, row2, (short)10, kma.getSelfNumber()==null?"":kma.getSelfNumber(),"2");
			createCell(wb,row2,(short)11,kma.getFdContbody()==null?"":kma.getFdContbody().getFdName(),"2");
			String pNames="";
			List<KmAgreementRelative> fdRelative = kma.getFdRelative();
	    	if(!ArrayUtil.isEmpty(fdRelative)){
	    		for(KmAgreementRelative per : fdRelative){
	    			KmRelativeMain krm = per.getFdRelative();
	    			/* pNames+= ";"+krm.getFdRelativeName(); */
	    			pNames=StringUtil.linkString(pNames, ";", krm.getFdRelativeName());
	    		}
	    	}
	    	createCell(wb,row2,(short)12,pNames==null?"":pNames,"2");
		}
		
		//数据处理
		
		//输出Excel文件
		wb.write(os);
		os.close();
        return null;
    }


//创建单元格
private static void createCell(HSSFWorkbook wb,HSSFRow row,short column,String value,String color){
    	HSSFCell cell=row.createCell(column);  // 创建单元格
    	cell.setCellValue(value); 
    	HSSFCellStyle cellStyle=wb.createCellStyle(); // 创建单元格样式
 		cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
 		cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 		cellStyle.setWrapText(true);  
 		HSSFFont fontStyle=wb.createFont();
 		if("1".equals(color)){
 			 // 背景色
		cellStyle.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
		cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
		cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); 
//		cellStyle.setFillForegroundColor((short) 13);// 设置背景色
//		cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		//设置字体样式
 		fontStyle.setFontName("宋体");
 		//设置粗体
 		fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
 		cellStyle.setFont(fontStyle);

 		cell.setCellStyle(cellStyle);
 		}else {
 			//设置字体样式
 	 		fontStyle.setFontName("仿宋");
 	 		//设置粗体
 	 		fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
 	 		cellStyle.setFont(fontStyle);

 	 		cell.setCellStyle(cellStyle);
 		}
 		
 		
    	
    }

其中具体的样式如何去调可以自己研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值