poi 生成excel 示例

	/**
	工作人员调配业务审批单
	 */
	public static HSSFWorkbook createGzryddTable(DataObject para) throws AppException, IOException {
		String nd = para.getString("nd","");
		int ddxh = para.getInt("ddxh",0);
		String lb = para.getString("lb","");
		String fx = para.getString("fx","");
		String zysy = para.getString("zysy","");
		String bzyj = para.getString("bzyj","");
		String fgfbzyj = para.getString("fgfbzyj","");
		String fzcsyj = para.getString("fzcsyj","");
		String bz = para.getString("bz","");
		DataStore ryds = para.getDataStore("ryds",new DataStore());
		
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("工作人员调配业务审批单");
		HSSFPrintSetup printSetup = sheet.getPrintSetup();
		printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
		printSetup.setLandscape(false); // 打印方向,true:横向,false:纵向(默认)  
		
		//列宽
		sheet.setColumnWidth(0,(int)4.88*256+184);
		sheet.setColumnWidth(1,(int)5.75*256+184);
		sheet.setColumnWidth(2,(int)8.38*256+184);
		sheet.setColumnWidth(3,(int)13.38*256+184);
		sheet.setColumnWidth(4,(int)4.25*256+184);
		sheet.setColumnWidth(5,(int)8.38*256+184);
		sheet.setColumnWidth(6,(int)6*256+184);
		sheet.setColumnWidth(7,(int)32.01*256+184);
		
		//行高
		HSSFRow row0 = sheet.createRow(0);
		row0.setHeightInPoints((float) 31.5);
		HSSFRow row1 = sheet.createRow(1);
		row1.setHeightInPoints((float) 21.75);
		HSSFRow row2 = sheet.createRow(2);
		row2.setHeightInPoints((float) 19.5);
		HSSFRow row3 = sheet.createRow(3);
		row3.setHeightInPoints((float) 63);
		HSSFRow row4 = sheet.createRow(4);
		row4.setHeightInPoints((float) 128.25);
		HSSFRow row5 = sheet.createRow(5);
		row5.setHeightInPoints((float) 128.25);
		HSSFRow row6 = sheet.createRow(6);
		row6.setHeightInPoints((float) 18.75);
		HSSFRow row7 = sheet.createRow(7);
		row7.setHeightInPoints((float) 109.5);
		HSSFRow row8 = sheet.createRow(8);
		row8.setHeightInPoints((float) 36);
		HSSFRow row9 = sheet.createRow(9);
		row9.setHeightInPoints((float) 25);
		HSSFRow row = null;
		for(int i=0; i<ryds.rowCount(); i++){
			row = sheet.createRow(10+i);
			row.setHeightInPoints((float) 29.25);
		}
		HSSFRow rowbw = sheet.createRow(10+ryds.rowCount());
		rowbw.setHeightInPoints((float) 16.5);
		
		//先设置所有边框
		HSSFCell cell = null;
		HSSFCellStyle style_allBorder = wb.createCellStyle(); 
		style_allBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_allBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_allBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_allBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		for(int i=0; i<=sheet.getLastRowNum(); i++){
			row = sheet.getRow(i);
			for(int j=0; j<8; j++){
				cell = row.createCell(j);
				if(i==0 || i==1 || i==sheet.getLastRowNum()){
					//前两行是表头,没有边框;最后一行表尾没有
				}else{
					cell.setCellStyle(style_allBorder);//设置边框
				}
			}
		}
		
        //设置打印参数    
		sheet.setMargin(HSSFSheet.TopMargin,( double ) 0.91 ); // 上边距
		sheet.setMargin(HSSFSheet.BottomMargin,( double ) 0.91 ); // 下边距
		sheet.setMargin(HSSFSheet.LeftMargin,( double ) 0.78 ); // 左边距
		sheet.setMargin(HSSFSheet.RightMargin,( double ) 0.78 ); // 右边距    
		sheet.setHorizontallyCenter(true);
		
		//大标题样式
		HSSFCellStyle style_bt = wb.createCellStyle(); // 样式对象
		HSSFFont font_bt = wb.createFont();
		font_bt.setFontName("微软雅黑");
		font_bt.setFontHeightInPoints((short)22);
		style_bt.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
		style_bt.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中       
		style_bt.setFont(font_bt);
		style_bt.setWrapText(true);//先设置为自动换行   
		style_bt.setBorderBottom(HSSFCellStyle.BORDER_NONE);
		style_bt.setBorderTop(HSSFCellStyle.BORDER_NONE);
		style_bt.setBorderRight(HSSFCellStyle.BORDER_NONE);
		style_bt.setBorderLeft(HSSFCellStyle.BORDER_NONE);
		//大标题
		//HSSFRow row0 = sheet.createRow(0);
		//row0.setHeightInPoints((float) 31.5);//行高
		sheet.addMergedRegion(new CellRangeAddress(0,0,0,7));
		cell = row0.getCell(0);
		cell.setCellValue(new HSSFRichTextString("工作人员调配业务审批单")); 
		cell.setCellStyle(style_bt); // 样式
		
		//年度序号样式
		HSSFCellStyle style_ddxh = wb.createCellStyle(); // 样式对象
		HSSFFont font_ddxh = wb.createFont();
		font_ddxh.setFontName("微软雅黑");
		font_ddxh.setFontHeightInPoints((short)10);
		style_ddxh.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//左右居右      
		style_ddxh.setVerticalAlignment(HSSFCellStyle.VERTICAL_BOTTOM);//上下居下  
		style_ddxh.setFont(font_ddxh);
		style_ddxh.setWrapText(true);//先设置为自动换行   
		style_ddxh.setBorderBottom(HSSFCellStyle.BORDER_NONE);
		style_ddxh.setBorderTop(HSSFCellStyle.BORDER_NONE);
		style_ddxh.setBorderRight(HSSFCellStyle.BORDER_NONE);
		style_ddxh.setBorderLeft(HSSFCellStyle.BORDER_NONE);
		//年度序号
		//HSSFRow row1 = sheet.createRow(1);
		//row1.setHeightInPoints((float) 21.75);
		sheet.addMergedRegion(new CellRangeAddress(1,1,0,7));
		cell = row1.getCell(0);
		cell.setCellValue(new HSSFRichTextString("〔"+nd+"〕"+ddxh+"号")); 
		cell.setCellStyle(style_ddxh); // 样式
		
		//  表头的格式
		HSSFCellStyle style_head = wb.createCellStyle(); // 样式对象
		HSSFFont font_head = wb.createFont();
		font_head.setFontName("黑体");
		font_head.setFontHeightInPoints((short)14);
		style_head.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
		style_head.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_head.setFont(font_head);
		style_head.setWrapText(true);
		style_head.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_head.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_head.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_head.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  主要事由、备注注表头的格式
		HSSFCellStyle style_sybz = wb.createCellStyle(); // 样式对象
		HSSFFont font_sybz = wb.createFont();
		font_sybz.setFontName("黑体");
		font_sybz.setFontHeightInPoints((short)14);
		style_sybz.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左右居左 
		style_sybz.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_sybz.setFont(font_sybz);
		style_sybz.setWrapText(true);
		style_sybz.setBorderBottom(HSSFCellStyle.BORDER_NONE);
		style_sybz.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_sybz.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_sybz.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  主要是有备注内容的格式
		HSSFCellStyle style_sybznr = wb.createCellStyle(); // 样式对象
		HSSFFont font_sybznr = wb.createFont();
		font_sybznr.setFontName("宋体");
		font_sybznr.setFontHeightInPoints((short)11);
		style_sybznr.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左右居左 
		style_sybznr.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);//上下居上
		style_sybznr.setFont(font_sybznr);
		style_sybznr.setWrapText(true);
		style_sybznr.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_sybznr.setBorderTop(HSSFCellStyle.BORDER_NONE);
		style_sybznr.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_sybznr.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  类别、方向、的格式
		HSSFCellStyle style_fxlb = wb.createCellStyle(); // 样式对象
		HSSFFont font_fxlb = wb.createFont();
		font_fxlb.setFontName("宋体");
		font_fxlb.setFontHeightInPoints((short)10);
		style_fxlb.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左右居左       
		style_fxlb.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_fxlb.setFont(font_fxlb);
		style_fxlb.setWrapText(true);
		style_fxlb.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_fxlb.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_fxlb.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_fxlb.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  意见的格式
		HSSFCellStyle style_yj = wb.createCellStyle(); // 样式对象
		HSSFFont font_yj = wb.createFont();
		font_yj.setFontName("宋体");
		font_yj.setFontHeightInPoints((short)11);
		style_yj.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
		style_yj.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_yj.setFont(font_yj);
		style_yj.setWrapText(true);
		style_yj.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_yj.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_yj.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_yj.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//   掉出调入的表头的格式
		HSSFCellStyle style_drdchead = wb.createCellStyle(); // 样式对象
		HSSFFont font_drdchead = wb.createFont();
		font_drdchead.setFontName("黑体");
		font_drdchead.setFontHeightInPoints((short)12);
		style_drdchead.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       
		style_drdchead.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_drdchead.setFont(font_drdchead);
		style_drdchead.setWrapText(true);
		style_drdchead.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_drdchead.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_drdchead.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_drdchead.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  掉出调入的格式
		HSSFCellStyle style_drdc = wb.createCellStyle(); // 样式对象
		HSSFFont font_drdc = wb.createFont();
		font_drdc.setFontName("宋体");
		font_drdc.setFontHeightInPoints((short)11);
		style_drdc.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左右居左      
		style_drdc.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_drdc.setFont(font_drdc);
		style_drdc.setWrapText(true);
		style_drdc.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		style_drdc.setBorderTop(HSSFCellStyle.BORDER_THIN);
		style_drdc.setBorderRight(HSSFCellStyle.BORDER_THIN);
		style_drdc.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		
		//  表尾的格式
		HSSFCellStyle style_bw = wb.createCellStyle(); // 样式对象
		HSSFFont font_bw = wb.createFont();
		font_bw.setFontName("华文楷体");
		font_bw.setFontHeightInPoints((short)11);
		style_bw.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//左右居右    
		style_bw.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
		style_bw.setFont(font_bw);
		style_bw.setWrapText(true);
		style_bw.setBorderBottom(HSSFCellStyle.BORDER_NONE);
		style_bw.setBorderTop(HSSFCellStyle.BORDER_NONE);
		style_bw.setBorderRight(HSSFCellStyle.BORDER_NONE);
		style_bw.setBorderLeft(HSSFCellStyle.BORDER_NONE);
		
		
		/**
		 * 类别
		 */
		cell = row2.getCell(0);
		cell.setCellValue("类别"); 
		cell.setCellStyle(style_head);
		cell = row2.getCell(2);
		cell.setCellValue(lb); 
		cell.setCellStyle(style_fxlb);
		sheet.addMergedRegion(new CellRangeAddress(2,3,0,1));//类别head
		sheet.addMergedRegion(new CellRangeAddress(2,3,2,3));//类别
		cell = row2.getCell(4);
		
		/**
		 * 方向
		 */
		cell.setCellValue("方向"); 
		cell.setCellStyle(style_head);
		cell = row2.getCell(5);
		cell.setCellValue(fx); 
		cell.setCellStyle(style_fxlb);
		sheet.addMergedRegion(new CellRangeAddress(2,3,4,4));//方向head
		sheet.addMergedRegion(new CellRangeAddress(2,3,5,6));//方向
		
		/**
		 * 部长意见
		 */
		cell = row4.getCell(0);
		cell.setCellValue("部长意见"); 
		cell.setCellStyle(style_head);
		cell = row4.getCell(2);
		cell.setCellValue(bzyj); 
		cell.setCellStyle(style_yj);
		sheet.addMergedRegion(new CellRangeAddress(4,4,0,1));//部长意见head
		sheet.addMergedRegion(new CellRangeAddress(4,4,2,6));//部长意见
		
		/**
		 * 分管副部长意见
		 */
		cell = row5.getCell(0);
		cell.setCellValue("分管副部长意见"); 
		cell.setCellStyle(style_head);
		cell = row5.getCell(2);
		cell.setCellValue(fgfbzyj); 
		cell.setCellStyle(style_yj);
		sheet.addMergedRegion(new CellRangeAddress(5,5,0,1));//分管副部长意见head
		sheet.addMergedRegion(new CellRangeAddress(5,5,2,6));//分管副部长意见
		
		/**
		 * 负责处室意见
		 */
		cell = row6.getCell(0);
		cell.setCellValue("负责处室意见"); 
		cell.setCellStyle(style_head);
		cell = row6.getCell(2);
		cell.setCellValue(fzcsyj); 
		cell.setCellStyle(style_yj);
		sheet.addMergedRegion(new CellRangeAddress(6,7,0,1));//负责处室意见head
		sheet.addMergedRegion(new CellRangeAddress(6,7,2,6));//负责处室意见意见
		
		/**
		 * 主要事由
		 * 
		 */
		cell = row2.getCell(7);
		cell.setCellValue("主要事由:"); //主要事由head
		cell.setCellStyle(style_sybz); 
		cell = row3.getCell(7);
		cell.setCellValue(zysy); //主要事由
		cell.setCellStyle(style_sybznr); 
		sheet.addMergedRegion(new CellRangeAddress(3,5,7,7));//主要事由
		
		/**
		 * 备注
		 */
		cell = row6.getCell(7);
		cell.setCellValue("备注:"); 
		cell.setCellStyle(style_sybz);
		cell = row7.getCell(7);
		cell.setCellValue(bz); 
		cell.setCellStyle(style_sybznr);
		
		/**
		 * 人员名单
		 */
		cell = row8.getCell(0);
		cell.setCellValue("人员名单"); 
		cell.setCellStyle(style_head);
		sheet.addMergedRegion(new CellRangeAddress(8,8,0,7));
		cell = row9.getCell(1);
		cell.setCellValue("姓名"); 
		cell.setCellStyle(style_drdchead);
		cell = row9.getCell(3);
		cell.setCellValue("原工作单位(职务/级别/岗位)"); 
		cell.setCellStyle(style_drdchead);
		cell = row9.getCell(7);
		cell.setCellValue("去向"); 
		cell.setCellStyle(style_drdchead);
		sheet.addMergedRegion(new CellRangeAddress(9,9,1,2));//姓名
		sheet.addMergedRegion(new CellRangeAddress(9,9,3,6));//原工作单位(职务/级别/岗位)
		
		for(int i=0; i<ryds.rowCount(); i++){
			row = sheet.getRow(10+i);
			cell = row.getCell(0);
			cell.setCellValue(i+1); 
			cell.setCellStyle(style_yj);
			
			cell = row.getCell(1);
			cell.setCellValue(ryds.getString(i, "xm")); 
			cell.setCellStyle(style_yj);
			
			cell = row.getCell(3);
			cell.setCellValue(ryds.getString(i, "ygzdw")); 
			cell.setCellStyle(style_drdc);
			
			cell = row.getCell(7);
			cell.setCellValue(ryds.getString(i, "qx")); 
			cell.setCellStyle(style_drdc);
			
			sheet.addMergedRegion(new CellRangeAddress(10+i,10+i,1,2));//姓名
			sheet.addMergedRegion(new CellRangeAddress(10+i,10+i,3,6));//原工作单位(职务/级别/岗位)
		}
		
		row = sheet.getRow(10+ryds.rowCount());
		cell = row.getCell(0);
		cell.setCellValue("济南高新区管委会人力资源管理部制"); 
		cell.setCellStyle(style_bw);
		sheet.addMergedRegion(new CellRangeAddress(10+ryds.rowCount(),10+ryds.rowCount(),0,7));
		
//		FileOutputStream out;
//		try {
//			out = new FileOutputStream("C:/Users/xbx/Desktop/济南高新区管委会人力资源管理部制.xls");
//			//ByteArrayOutputStream os = new ByteArrayOutputStream();
//			//wb.write(os);
////			byte[] inBuff =os.toByteArray();
////			
////			byte[] retDoc = OpenOfficeAPI.word2PDF(inBuff, OpenOfficeAPI.TYPE_XLS);
////			
//			wb.write(out);
//			out.close();
//		} catch (FileNotFoundException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		return wb;
	}	 

猜你喜欢

转载自blog.csdn.net/xubenxismile/article/details/79139170