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

来源:互联网 发布:光盘盘面打印软件 编辑:程序博客网 时间:2024/05/18 01:39
我们接下来要进行最复杂的一个打印,就是购销合同的打印---制式表单的打印,业界最复杂的报表打印。

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

1 0
原创粉丝点击