我们接下来要进行最复杂的一个打印,就是购销合同的打印---制式表单的打印,业界最复杂的报表打印。

a)分析技术难点:
1)插入图片,POI插入图片时,设定区域,自动缩放到这个区域中,图片要设置偏移量
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();//add picture
poiUtil.setPicture(wb, patriarch, path+"make/xlsprint/logo.jpg", curRow, 2, curRow+4, 2);

2)模板,对于购销合同它不能直接做模板。代码中不能做这个功能。Excel支持区域复制。但是目前POI不直接支持区域复制。(合并单元格在sheet对象中、图片、线等)(基于用户使用系统,以及POI不直接支持区域复制,所以它不能直接使用模板)
A.只是改变列宽
B.画一个sheet,利用poi支持sheet的复制,保留样式。

3)插入一根线,设置两个坐标,它直接连线,可以是直线,可以是斜线,可以设置偏移量
poiUtil.setLine(wb, patriarch, curRow, 2, curRow, 8);//draw line

4)合并单元格,特点:合并单元格的边线样式,它实际上是在合并前的单元格上设置的。特殊的地方:在单元格如果有样式,合并单元格的这几个格子都必须设置边线样式。
CellRangeAddress region = null;
region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);//纵向合并单元格

不需要设置内容,只设置样式,补齐线。
for(int j=2;j<9;j++){
nCell = nRow.createCell(j);
nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));
}

5)换行
curStyle.setWrapText(true);

6)设置人民币符号(前缀)
format.getFormat("\"¥\"#,###,###.00");

7)设置公式,乘法,合计公式
nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow));

8)实现审单人的人名等量空格替换,实现它后面的位置不变(工具类)
utilFuns.fixSpaceStr(contract.getCheckBy(),26)

9)单元格自适应(工具类)
float height = poiUtil.getCellAutoHeight(printMap.get("Request"), 12f);//自动高度

10)数据和业务分离
一页数据封装到一个map中,以业务字段名称定义KEY,以string定义内容
所有页面封装到一个arraylist。
Map<String,String> pageMap = null;
List<Map> pageList = new ArrayList();//打印页

11)插入分页符
if(p>0){
sheet.setRowBreak(curRow++);//在第startRow行设置分页符
}

12)公用的工具类PoiUtil poiUtil = new PoiUtil();  样式,特殊内容封装

13)return format.getFormat("\"¥\"#,###,##0.00"); // 设置格式
0代表,这位值如果不为零,显示原来的内容,直接输出0
#代表,这位值如果存在,就直接显示,不存在,就不显示。

14)nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);

购销合同最总打印样式:

实现代码:

package cn.itcast.jk.print;import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletResponse;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.HSSFPatriarch;
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;import cn.itcast.jk.vo.ContractProductVO;
import cn.itcast.jk.vo.ContractVO;
import cn.itcast.util.DownloadUtil;
import cn.itcast.util.UtilFuns;
import cn.itcast.util.file.PoiUtil;//手工POI写excel文件
public class ContractPrint{public void print(ContractVO contract,String path, HttpServletResponse response) throws Exception{//相同厂家的信息一起打印List<ContractProductVO> oList = contract.getContractProducts();UtilFuns utilFuns = new UtilFuns();String tempXlsFile = path + "make/xlsprint/tCONTRACT.xls";      //获取模板文件//填写每页的内容,之后在循环每页读取打印Map<String,String> pageMap = null;List<Map> pageList = new ArrayList();           //打印页ContractProductVO oProduct = null;String stars = "";for(int j=0;j<contract.getImportNum();j++){      //重要程度stars += "";}String oldFactory = "";for(int i=0;i<oList.size();i++){oProduct = oList.get(i);    //获得货物pageMap = new HashMap(); //每页的内容pageMap.put("Offeror", "收 购 方:" + contract.getOfferor());pageMap.put("Factory", "生产工厂:" + oProduct.getFactory().getFactoryName());pageMap.put("ContractNo", "合 同 号:" + contract.getContractNo());pageMap.put("Contractor", "联 系 人:" + oProduct.getFactory().getContractor());pageMap.put("SigningDate", "签单日期:"+UtilFuns.formatDateTimeCN(UtilFuns.dateTimeFormat(contract.getSigningDate())));pageMap.put("Phone", "电    话:" + oProduct.getFactory().getPhone());pageMap.put("InputBy", "制单:" + contract.getInputBy());pageMap.put("CheckBy", "审单:"+ utilFuns.fixSpaceStr(contract.getCheckBy(),26)+"验货员:"+utilFuns.convertNull(contract.getInspector()));pageMap.put("Remark", "  "+contract.getRemark());pageMap.put("Request", "  "+contract.getCrequest());pageMap.put("ProductImage", oProduct.getProductImage());pageMap.put("ProductDesc", oProduct.getProductDesc());pageMap.put("Cnumber", String.valueOf(oProduct.getCnumber().doubleValue()));if(oProduct.getPackingUnit().equals("PCS")){pageMap.put("PackingUnit", "只");}else if(oProduct.getPackingUnit().equals("SETS")){pageMap.put("PackingUnit", "套");}pageMap.put("Price", String.valueOf(oProduct.getPrice().doubleValue()));pageMap.put("ProductNo", oProduct.getProductNo());oldFactory = oProduct.getFactory().getFactoryName();if(contract.getPrintStyle().equals("2")){i++;    //读取第二个货物信息if(i<oList.size()){oProduct = oList.get(i);if(oProduct.getFactory().getFactoryName().equals(oldFactory)){    //厂家不同另起新页打印,除去第一次的比较pageMap.put("ProductImage2", oProduct.getProductImage());pageMap.put("ProductDesc2", oProduct.getProductDesc());pageMap.put("Cnumber2", String.valueOf(oProduct.getCnumber().doubleValue()));if(oProduct.getPackingUnit().equals("PCS")){pageMap.put("PackingUnit2", "只");}else if(oProduct.getPackingUnit().equals("SETS")){pageMap.put("PackingUnit2", "套");}                       pageMap.put("Price2", String.valueOf(oProduct.getPrice().doubleValue()));//pageMap.put("Amount2", String.valueOf(oProduct.getAmount().doubleValue()));          //在excel中金额采用公式,所以无需准备数据pageMap.put("ProductNo2", oProduct.getProductNo());}else{i--;  //tip:list退回}}else{pageMap.put("ProductNo2", null);   //后面依据此判断是否有第二个货物}}pageMap.put("ContractDesc", stars+" 货物描述");         //重要程度 + 货物描述pageList.add(pageMap);}int cellHeight = 96;  //一个货物的高度           用户需求,一个货物按192高度打印,后来又嫌难看,打印高度和2款高度一样。
//      if(contract.getPrintStyle().equals("2")){
//          cellHeight = 96;   //两个货物的高度
//      }PoiUtil poiUtil = new PoiUtil();HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(tempXlsFile));    //打开excel文件HSSFFont defaultFont10 = poiUtil.defaultFont10(wb);     //设置字体HSSFFont defaultFont12 = poiUtil.defaultFont12(wb);      //设置字体HSSFFont blackFont = poiUtil.blackFont12(wb);            //设置字体Short rmb2Format = poiUtil.rmb2Format(wb);               //设置格式Short rmb4Format = poiUtil.rmb4Format(wb);               //设置格式HSSFSheet sheet = wb.getSheetAt(0);              //选择第一个工作簿wb.setSheetName(0, "购销合同");                 //设置工作簿的名称//sheet.setDefaultColumnWidth((short) 20);        // 设置每列默认宽度//       POI分页符有BUG,必须在模板文件中插入一个分页符,然后再此处删除预设的分页符;最后在下面重新设置分页符。
//      sheet.setAutobreaks(false);
//      int iRowBreaks[] = sheet.getRowBreaks();
//      sheet.removeRowBreak(3);
//      sheet.removeRowBreak(4);
//      sheet.removeRowBreak(5);
//      sheet.removeRowBreak(6);CellRangeAddress region = null;HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      //add pictureHSSFRow nRow = null;HSSFCell nCell   = null;int curRow = 0;//打印每页Map<String,String> printMap = null;for(int p=0;p<pageList.size();p++){printMap = pageList.get(p);if(p>0){sheet.setRowBreak(curRow++);   //在第startRow行设置分页符}//设置logo图片poiUtil.setPicture(wb, patriarch, path+"make/xlsprint/logo.jpg", curRow, 2, curRow+4, 2);//headernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(21);nCell   = nRow.createCell((3));nCell.setCellValue("SHAANXI");nCell.setCellStyle(headStyle(wb));//headernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(41);nCell   = nRow.createCell((3));nCell.setCellValue("     JK INTERNATIONAL ");nCell.setCellStyle(tipStyle(wb));curRow++;//headernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(20);nCell   = nRow.createCell((1));nCell.setCellValue("                 西经济技术开发区西城一路27号无迪大厦19楼");nCell.setCellStyle(addressStyle(wb));//headernCell   = nRow.createCell((6));nCell.setCellValue(" CO., LTD.");nCell.setCellStyle(ltdStyle(wb));//headernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(15);nCell   = nRow.createCell((1));nCell.setCellValue("                   TEL: 0086-29-86339371  FAX: 0086-29-86303310               E-MAIL: ijackix@glass.cn");nCell.setCellStyle(telStyle(wb));//linenRow = sheet.createRow(curRow++);nRow.setHeightInPoints(7);poiUtil.setLine(wb, patriarch, curRow, 2, curRow, 8);  //draw line//headernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(30);nCell   = nRow.createCell((4));nCell.setCellValue("    购   销   合   同");nCell.setCellStyle(titleStyle(wb));//OfferornRow = sheet.createRow(curRow++);nRow.setHeightInPoints(20);nCell   = nRow.createCell((1));nCell.setCellValue(printMap.get("Offeror"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//FacotrynCell   = nRow.createCell((5));nCell.setCellValue(printMap.get("Factory"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//ContractNonRow = sheet.createRow(curRow++);nRow.setHeightInPoints(20);nCell   = nRow.createCell(1);nCell.setCellValue(printMap.get("ContractNo"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//ContractornCell  = nRow.createCell(5);nCell.setCellValue(printMap.get("Contractor"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//SigningDatenRow = sheet.createRow(curRow++);nRow.setHeightInPoints(20);nCell = nRow.createCell(1);nCell.setCellValue(printMap.get("SigningDate"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//PhonenCell = nRow.createCell(5);nCell.setCellValue(printMap.get("Phone"));nCell.setCellStyle(poiUtil.titlev12(wb, blackFont));//importNumnRow = sheet.createRow(curRow++);nRow.setHeightInPoints(24);region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);    //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(1);nCell.setCellValue("产品");nCell.setCellStyle(thStyle(wb));     nCell = nRow.createCell(2);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));nCell = nRow.createCell(3);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));nCell = nRow.createCell(4);nCell.setCellValue(printMap.get("ContractDesc"));nCell.setCellStyle(thStyle(wb));   region = new CellRangeAddress(curRow-1, curRow-1, 5, 6);   //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(5);nCell.setCellValue("数量");nCell.setCellStyle(thStyle(wb)); nCell = nRow.createCell(6);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));         nCell = nRow.createCell(7);nCell.setCellValue("单价");nCell.setCellStyle(thStyle(wb));                     nCell = nRow.createCell(8);nCell.setCellValue("总金额");nCell.setCellStyle(thStyle(wb));                        nRow = sheet.createRow(curRow++);nRow.setHeightInPoints(96);region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);    //纵向合并单元格 sheet.addMergedRegion(region);//插入产品图片if(UtilFuns.isNotEmpty(printMap.get("ProductImage"))){System.out.println(printMap.get("ProductImage"));poiUtil.setPicture(wb, patriarch, path+"ufiles/jquery/"+printMap.get("ProductImage"), curRow-1, 1, curRow, 3);}nCell = nRow.createCell(2);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));nCell = nRow.createCell(3);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));//ProductDescregion = new CellRangeAddress(curRow-1, curRow, 4, 4);  //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(4);nCell.setCellValue(printMap.get("ProductDesc"));nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));       //Cnumberregion = new CellRangeAddress(curRow-1, curRow, 5, 5);    //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(5);nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);nCell.setCellValue(Double.parseDouble(printMap.get("Cnumber")));nCell.setCellStyle(poiUtil.numberrv10_BorderThin(wb, defaultFont10));   //Unitregion = new CellRangeAddress(curRow-1, curRow, 6, 6);   //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(6);nCell.setCellValue(printMap.get("PackingUnit"));nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format));  //Priceregion = new CellRangeAddress(curRow-1, curRow, 7, 7);  //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(7);nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);nCell.setCellValue(Double.parseDouble(printMap.get("Price")));nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format));//Amountregion = new CellRangeAddress(curRow-1, curRow, 8, 8);   //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(8);if(UtilFuns.isNotEmpty(printMap.get("Cnumber")) && UtilFuns.isNotEmpty(printMap.get("Price"))){nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow));}nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format));          curRow++;region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);    //纵向合并单元格 sheet.addMergedRegion(region);//ProductNonRow = sheet.createRow(curRow-1);nRow.setHeightInPoints(24);nCell = nRow.createCell(1);nCell.setCellValue(printMap.get("ProductNo"));nCell.setCellStyle(poiUtil.notecv10_BorderThin(wb, defaultFont10));for(int j=2;j<9;j++){nCell = nRow.createCell(j);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));}if(contract.getPrintStyle().equals("2") && UtilFuns.isNotEmpty(printMap.get("ProductNo2"))){nRow = sheet.createRow(curRow++);nRow.setHeightInPoints(96);region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);  //纵向合并单元格 sheet.addMergedRegion(region);//插入产品图片if(UtilFuns.isNotEmpty(printMap.get("ProductImage2"))){System.out.println(printMap.get("ProductImage2"));poiUtil.setPicture(wb, patriarch, path+"ufiles/jquery/"+printMap.get("ProductImage2"), curRow-1, 1, curRow, 3);}//ProductDescregion = new CellRangeAddress(curRow-1, curRow, 4, 4); //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(4);nCell.setCellValue(printMap.get("ProductDesc2"));nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));      //Cnumberregion = new CellRangeAddress(curRow-1, curRow, 5, 5);    //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(5);nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);nCell.setCellValue(Double.parseDouble(printMap.get("Cnumber2")));nCell.setCellStyle(poiUtil.numberrv10_BorderThin(wb, defaultFont10));  //Unitregion = new CellRangeAddress(curRow-1, curRow, 6, 6);   //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(6);nCell.setCellValue(printMap.get("PackingUnit2"));nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format)); //Priceregion = new CellRangeAddress(curRow-1, curRow, 7, 7);  //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(7);nCell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);nCell.setCellValue(Double.parseDouble(printMap.get("Price2")));nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format));//Amountregion = new CellRangeAddress(curRow-1, curRow, 8, 8);  //纵向合并单元格 sheet.addMergedRegion(region);nCell = nRow.createCell(8);if(UtilFuns.isNotEmpty(printMap.get("Cnumber2")) && UtilFuns.isNotEmpty(printMap.get("Price2"))){nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow));}nCell.setCellStyle(poiUtil.moneyrv10_BorderThin(wb, defaultFont10, rmb4Format));        curRow++;region = new CellRangeAddress(curRow-1, curRow-1, 1, 3);    //纵向合并单元格sheet.addMergedRegion(region);nRow = sheet.createRow(curRow-1);nRow.setHeightInPoints(24);nCell = nRow.createCell(1);nCell.setCellValue(printMap.get("ProductNo2"));nCell.setCellStyle(poiUtil.notecv10_BorderThin(wb, defaultFont10));            //合并单元格画线for(int j=2;j<9;j++){nCell = nRow.createCell(j);nCell.setCellStyle(poiUtil.notehv10_BorderThin(wb, defaultFont10));}                }//InputBynRow = sheet.createRow(curRow++);nRow.setHeightInPoints(24);nCell = nRow.createCell(1);nCell.setCellValue(printMap.get("InputBy"));nCell.setCellStyle(poiUtil.bnormalv12(wb,defaultFont12));//CheckBy+inspectornCell = nRow.createCell(4);nCell.setCellValue(printMap.get("CheckBy"));nCell.setCellStyle(poiUtil.bnormalv12(wb,defaultFont12));//if(contract.getPrintStyle().equals("2") && UtilFuns.isNotEmpty(printMap.get("ProductNo2"))){nCell = nRow.createCell(7);nCell.setCellValue("总金额:");nCell.setCellStyle(bcv12(wb));//TotalAmountnRow = sheet.createRow(curRow-1);nRow.setHeightInPoints(24);if(UtilFuns.isNotEmpty(printMap.get("Cnumber"))&&UtilFuns.isNotEmpty(printMap.get("Price"))){nCell  = nRow.createCell(8);nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);nCell.setCellFormula("SUM(I"+String.valueOf(curRow-4)+":I"+String.valueOf(curRow-1)+")");nCell.setCellStyle(poiUtil.moneyrv12_BorderThin(wb,defaultFont12,rmb2Format));      }//}//notenRow = sheet.createRow(curRow++);nRow.setHeightInPoints(21);nCell = nRow.createCell(2);nCell.setCellValue(printMap.get("Remark"));nCell.setCellStyle(noteStyle(wb));            //Requestregion = new CellRangeAddress(curRow, curRow, 1, 8);  //指定合并区域 sheet.addMergedRegion(region);nRow = sheet.createRow(curRow++);float height = poiUtil.getCellAutoHeight(printMap.get("Request"), 12f);       //自动高度nRow.setHeightInPoints(height);nCell = nRow.createCell(1);nCell.setCellValue(printMap.get("Request"));nCell.setCellStyle(requestStyle(wb));//space linenRow = sheet.createRow(curRow++);nRow.setHeightInPoints(20);//dutynRow = sheet.createRow(curRow++);nRow.setHeightInPoints(32);nCell = nRow.createCell(1);nCell.setCellValue("未按以上要求出货而导致客人索赔,由供方承担。");nCell.setCellStyle(dutyStyle(wb));    //space linenRow = sheet.createRow(curRow++);nRow.setHeightInPoints(32);//buyernRow = sheet.createRow(curRow++);nRow.setHeightInPoints(25);nCell = nRow.createCell(1);nCell.setCellValue("    收购方负责人:");nCell.setCellStyle(dutyStyle(wb));              //sellernCell = nRow.createCell(5);nCell.setCellValue("供方负责人:");nCell.setCellStyle(dutyStyle(wb));    curRow++;}ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();         //生成流对象wb.write(byteArrayOutputStream);                                                 //将excel写入流//工具类,封装弹出下载框:     String outFile = "购销合同.xls";DownloadUtil down = new DownloadUtil();down.download(byteArrayOutputStream, response, outFile);}private HSSFCellStyle leftStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();curStyle.setWrapText(true);                         //换行   HSSFFont curFont = wb.createFont();                 //设置字体curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置//fTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);   //加粗curFont.setFontHeightInPoints((short)10);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中curStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);             //实线右边框curStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);             //实线右边框return curStyle;}  private HSSFCellStyle headStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                  //设置字体curFont.setFontName("Comic Sans MS");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);      //设置中文字体,那必须还要再对单元格进行编码设置curFont.setItalic(true);curFont.setFontHeightInPoints((short)16);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle tipStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                 //设置字体curFont.setFontName("Georgia");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);        //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗curFont.setFontHeightInPoints((short)28);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle addressStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                 //设置字体curFont.setFontName("宋体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置//fTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);   //加粗curFont.setFontHeightInPoints((short)10);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle ltdStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                 //设置字体curFont.setFontName("Times New Roman");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);        //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗curFont.setItalic(true);curFont.setFontHeightInPoints((short)16);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle telStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                 //设置字体curFont.setFontName("宋体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置//fTitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);   //加粗curFont.setFontHeightInPoints((short)9);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);     //单元格垂直居中return curStyle;}  private HSSFCellStyle titleStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                   //设置字体curFont.setFontName("黑体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗curFont.setFontHeightInPoints((short)18);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle requestStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();curStyle.setWrapText(true);                          //换行   HSSFFont curFont = wb.createFont();                 //设置字体curFont.setFontName("宋体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置curFont.setFontHeightInPoints((short)10);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle dutyStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                    //设置字体curFont.setFontName("黑体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗curFont.setFontHeightInPoints((short)16);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;}  private HSSFCellStyle noteStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                    //设置字体curFont.setFontName("宋体");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);     //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //加粗curFont.setFontHeightInPoints((short)12);curStyle.setFont(curFont);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);        //单元格垂直居中return curStyle;} public HSSFCellStyle thStyle(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                    //设置字体curFont.setFontName("宋体");curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  //加粗curFont.setFontHeightInPoints((short)12);curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);      //设置中文字体,那必须还要再对单元格进行编码设置curStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);               //实线右边框curStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);              //实线右边框curStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);         //实线右边框curStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);               //实线右边框curStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);      //单元格垂直居中return curStyle;}  public HSSFCellStyle bcv12(HSSFWorkbook wb){HSSFCellStyle curStyle = wb.createCellStyle();HSSFFont curFont = wb.createFont();                     //设置字体curFont.setFontName("Times New Roman");curFont.setCharSet(HSSFFont.DEFAULT_CHARSET);            //设置中文字体,那必须还要再对单元格进行编码设置curFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);        //加粗curFont.setFontHeightInPoints((short)12);curStyle.setFont(curFont);curStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);                //实线curStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);         //粗实线curStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);           //实线curStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);              //实线curStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);curStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);      //单元格垂直居中return curStyle;}      }

打印出来的和前面的样板一样,至此我们完成购销合同的打印工作。

转载请注明出处:http://blog.csdn.net/acmman/article/details/48827101

【springmvc+mybatis项目实战】杰信商贸-29.购销合同技术难点分析相关推荐

  1. 【springmvc+mybatis项目实战】杰信商贸-11.购销合同业务

    首先我们先了解一下业务,什么是"货运管理"? "货运管理"是国际物流的概念,往常我们货物送到国内没有那么多事情,但是货物发往国外就多了很多手续,依靠小物流公司我 ...

  2. 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾

    1.重点知识回顾 Maven 1)覆盖仓库文件,实际企业开发,公司会架一个测试服务器,在测试服务器中架私服.我们开发人员的程序,都连接私服.当本地没有项目中要使用的jar,Myeclipse mave ...

  3. 【springmvc+mybatis项目实战】杰信商贸-16.新增从表货物信息

    通过上几次我们已经将购销合同的所有业务完成了,接下来我们要完成的是在购销合同下的货物的业务 我们的购销合同相对于货物是一对多的,所以我们需要配置对象之间的关联关系. 首先先编写实体类ContractP ...

  4. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置

    首先我们来了解项目的架构 我们分别使用了MySql和Oracle数据库,即是异构数据库.我们做到一个平台支持多个数据库. 数据库 建模我们使用Sybase公司的PowerDesigner(以后简称PD ...

  5. 毕业设计-课程设计-Spring+SpringMVC+Mybatis项目—企业权限管理系统(1)

    JavaEE:Spring+SpringMVC+Mybatis项目-企业权限管理系统 首先给出项目演示地址:http://www.youngxy.top:8080/SSM/ 项目架构图: 一:功能需求 ...

  6. Python项目实战:使用PySpark对大数据进行分析

    Python项目实战:使用PySpark对大数据进行分析 大数据,顾名思义就是大量的数据,一般这些数据都是PB级以上.PB是数据存储容量的单位,它等于2的50次方个字节,或者在数值上大约等于1000个 ...

  7. 【超详细】SSM框架项目实战|Spring+Mybatis+Springmvc框架项目实战整合-【CRM客户管理系统】——课程笔记

    相关资料网盘链接: CRM客户管理系统资料 提取码 :0u04 P1--CRM阶段简介: web项目开发:如何分析,设计,编码,测试.        形成编程思想和编程习惯. P2--CRM的技术架构 ...

  8. 基于mysql的springmvcjar_糊涂jar_SpringMVC+Spring+Mybatis项目实战[SSM/MySQL/AJAX/IDEA]_Java视频-51CTO学院...

    鸟哥QQ交流群:833468344 我所有课程的学习主线为:java基础--->面向对象--->java高级部分(集合.多线程.正则表达式等)--->html5+css3---> ...

  9. Maven搭建SpringMVC+Mybatis项目详解【转】

    为什么80%的码农都做不了架构师?>>>    前言 最近比较闲,复习搭建一下项目,这次主要使用Spring+SpringMVC+Mybatis.项目持久层使用Mybatis3,控制 ...

  10. Spring+SpringMVC+Mybatis项目在线考试管理系统

    随着时代的发展,人们对考试的要求也越来越多,无论是在校学生,公务员考试还是驾校考试,考试参与的人数越来越多,如果还是延用传统的考试模式进行考试这无疑会给管理考试的工作人员增加很大的负担,同时给参与考试 ...

最新文章

  1. Lesson 16.3 卷积操作
  2. InternetOpen InternetOpenUrl InternetReadFile 和 InternetCloseHandle
  3. 华为平板wps语音朗读_华为隐藏的这五大功能,个个都很实用,如果你不知道,钱就白花了...
  4. 彻底清除计算机远程桌面连接的历史记录
  5. 前端学习(3149):react-hello-react之总结生命周期
  6. [SecureCRT] 解决 securecrt failed to open the host key database file 的问题
  7. 用C#把文件转换为XML
  8. VS2013 MFC + OpenCV3.0 打开图片
  9. 在R中创建晶须和盒图
  10. Pulseaudio实用命令(二)
  11. 纯CSS Lightbox效果
  12. html消除样式,清除css样式
  13. 基于 redis 的单点登录原理
  14. 关于mysql union 之后 排序乱掉
  15. CIKM 2019 挑战杯「用户行为预测」冠军方案:层次GNN模型在推荐中的应用
  16. C++入门:让计算机“开口说话”
  17. excel日期函数的应用
  18. java读取文本文件,并且去除重复字段
  19. typedef的用法简介
  20. [网络流][最大点权独立集] 方格取数

热门文章

  1. MySql Workbench 8.0汉化插件分享
  2. python教材分析_初中信息技术_初识Python教学设计学情分析教材分析课后反思
  3. 中国海水产品加工行业发展现状及趋势分析,山东省产量最高「图」
  4. 本地计算机的硬件基本配置信息,Windows7系统如何查看硬件的基本配置
  5. linux中快速拷贝大文件,linux下如何实现快速拷贝大文件
  6. ASM Is Unable To Detect SCSI Disks On Windows. [ID 880061.1]
  7. 自学人工智能 日记2017, ,搞定了
  8. Ubuntu20.04Server双网卡问题
  9. DaHua工业相机开发中调试遇到的相机断开问题
  10. 二阶压控电压源低通滤波器的传递函数