表格导出
service
public void exportById(Long uuid, OutputStream os) throws Exception { //查询出订单 Orders orders = ordersDao.get(uuid); //订单的明细 List<Orderdetail> list = orders.getOrderDetails(); //创建工作簿 Workbook wk = new HSSFWorkbook(); String title = "采 购 单"; //创建工作表 Sheet sht = wk.createSheet(title); //创建行,索引是从0开,列的从0开始 Row row = sht.createRow(0); row.setHeight((short)1000); //创建字体 Font font_content = wk.createFont(); font_content.setFontName("宋体"); font_content.setFontHeightInPoints((short)11); //创建标题的样式 CellStyle style_title = wk.createCellStyle(); //标题的字体 Font font_title = wk.createFont(); font_title.setFontName("黑体"); font_title.setFontHeightInPoints((short)18); //创建单元格样式 CellStyle style_content = wk.createCellStyle(); //居中 style_content.setAlignment(CellStyle.ALIGN_CENTER);//水平居中 style_content.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//垂直居中 //复制样式 style_title.cloneStyleFrom(style_content); //设置标题的字体 style_title.setFont(font_title); //标题的单元格 Cell cell_title = sht.getRow(0).createCell(0); //设置标题的样式 cell_title.setCellStyle(style_title); style_content.setBorderBottom(CellStyle.BORDER_THIN);//底部边框为细边框 style_content.setBorderLeft(CellStyle.BORDER_THIN);// style_content.setBorderTop(CellStyle.BORDER_THIN); style_content.setBorderRight(CellStyle.BORDER_THIN); //设置样式的字体 style_content.setFont(font_content); //创建日期的样式 CellStyle style_date = wk.createCellStyle(); style_date.cloneStyleFrom(style_content); //格式化 DataFormat dataFormat = wk.createDataFormat(); style_date.setDataFormat(dataFormat.getFormat("yyyy-MM-dd")); //合并单元格 //firstRow 开始的行, lastRow结束的行, firstCol开始的列, lastCol结束的列 sht.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));//标题 sht.addMergedRegion(new CellRangeAddress(2, 2, 1, 3));//供应商 sht.addMergedRegion(new CellRangeAddress(7, 7, 0, 3));//明细 int rowCnt = 9 + list.size(); //创建行 for(int i = 2; i <= rowCnt; i++){ row = sht.createRow(i); //设置行高 row.setHeight((short)500); for(int j = 0; j < 4; j++){ //设置单元格的样式 row.createCell(j).setCellStyle(style_content); } } //设置列宽 for(int i = 0; i < 4; i++){ sht.setColumnWidth(i, 5000); } //设置内容 cell_title.setCellValue(title);//标题 //供应商 sht.getRow(2).getCell(0).setCellValue("供应商"); //日期 sht.getRow(3).getCell(0).setCellValue("下单日期"); sht.getRow(4).getCell(0).setCellValue("审核日期"); sht.getRow(5).getCell(0).setCellValue("采购日期"); sht.getRow(6).getCell(0).setCellValue("入库日期"); //设置日期格式 sht.getRow(3).getCell(1).setCellStyle(style_date); sht.getRow(4).getCell(1).setCellStyle(style_date); sht.getRow(5).getCell(1).setCellStyle(style_date); sht.getRow(6).getCell(1).setCellStyle(style_date); sht.getRow(3).getCell(1).setCellValue(orders.getCreatetime());//下单日期 setDateValue(sht.getRow(4).getCell(1),orders.getChecktime());//审核日期 setDateValue(sht.getRow(5).getCell(1),orders.getStarttime());//确认日期 setDateValue(sht.getRow(6).getCell(1),orders.getEndtime());//入库日期 sht.getRow(3).getCell(2).setCellValue("经办人"); sht.getRow(4).getCell(2).setCellValue("经办人"); sht.getRow(5).getCell(2).setCellValue("经办人"); sht.getRow(6).getCell(2).setCellValue("经办人"); sht.getRow(3).getCell(3).setCellValue(getEmpName(orders.getCreater()));//下单人 sht.getRow(4).getCell(3).setCellValue(getEmpName(orders.getChecker()));//审核人 sht.getRow(5).getCell(3).setCellValue(getEmpName(orders.getStarter()));//确认人 sht.getRow(6).getCell(3).setCellValue(getEmpName(orders.getEnder()));//库管员 sht.getRow(7).getCell(0).setCellValue("订单明细"); sht.getRow(8).getCell(0).setCellValue("商品名称"); sht.getRow(8).getCell(1).setCellValue("数量"); sht.getRow(8).getCell(2).setCellValue("价格"); sht.getRow(8).getCell(3).setCellValue("金额"); //设置供应商 sht.getRow(2).getCell(1).setCellValue(getSupplierName(orders.getSupplieruuid())); int i = 9; for (Orderdetail od : list) { row = sht.getRow(i); row.getCell(0).setCellValue(od.getGoodsname()); row.getCell(1).setCellValue(od.getNum()); row.getCell(2).setCellValue(od.getPrice()); row.getCell(3).setCellValue(od.getMoney()); i++; } sht.getRow(i).getCell(0).setCellValue("合计"); sht.getRow(i).getCell(3).setCellValue(orders.getTotalmoney()); //把工作簿写到输出流中 try { wk.write(os); } finally{ try { wk.close(); } catch (IOException e) { e.printStackTrace(); } } }
action
public void exportById(){ HttpServletResponse response = ServletActionContext.getResponse(); try { //转成字节码,再用西欧编码来读取字符串,解决乱码问题 String filename = "orders_" + getId() + ".xls"; response.setHeader("Content-Disposition", "attachment;filename=" + filename); ordersBiz.exportById(getId(), response.getOutputStream()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }

浙公网安备 33010602011771号