Commit 172fae59 authored by 李贺贺's avatar 李贺贺

对账单打印格式优化

parent 83d6fe57
...@@ -15,8 +15,6 @@ import java.math.BigDecimal; ...@@ -15,8 +15,6 @@ import java.math.BigDecimal;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
...@@ -27,14 +25,12 @@ import javax.servlet.http.HttpServletResponse; ...@@ -27,14 +25,12 @@ import javax.servlet.http.HttpServletResponse;
import com.hand.hls.hlcm.cont.util.ExcelFormatUtil; import com.hand.hls.hlcm.cont.util.ExcelFormatUtil;
import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.*; import org.apache.poi.xssf.streaming.*;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDataFormat;
import org.codehaus.jackson.annotate.JsonSubTypes;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -91,11 +87,15 @@ public class ConExportServiceImpl implements ConExportService { ...@@ -91,11 +87,15 @@ public class ConExportServiceImpl implements ConExportService {
SXSSFDrawing patriarch = sheet.createDrawingPatriarch(); SXSSFDrawing patriarch = sheet.createDrawingPatriarch();
//Drawing patriarch = sheet.createDrawingPatriarch(); //Drawing patriarch = sheet.createDrawingPatriarch();
//anchor主要用于设置图片的属性 //anchor主要用于设置图片的属性
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255, (short) 3, 0, (short) 7, 3); //dx1 :距离开始单元格左侧的距离 dy1:距离开始单元格上侧的距离
//dx2 :距离结束单元格左侧的距离 dy2:距离开始单元格上侧的距离
//col1:起始单元格列序号,row1:起始单元格行序号
//col2:结束单元格列序号,row2:结束单元格行序号
XSSFClientAnchor anchor = new XSSFClientAnchor(25*10000, 0, 25*10000, 0, (short) 2, 0, (short) 6, 3);
anchor.setAnchorType(ClientAnchor.AnchorType.byId(3)); anchor.setAnchorType(ClientAnchor.AnchorType.byId(3));
//插入图片 //插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
CellRangeAddress regionTitle0 = new CellRangeAddress(0, 2, 0, 9); CellRangeAddress regionTitle0 = new CellRangeAddress(0, 2, 0, 7);//删除最后一列
sheet.addMergedRegion(regionTitle0); sheet.addMergedRegion(regionTitle0);
CellStyle content = ExcelFormatUtil.contentStyle(wb);// 黑体居左显示 CellStyle content = ExcelFormatUtil.contentStyle(wb);// 黑体居左显示
...@@ -104,35 +104,35 @@ public class ConExportServiceImpl implements ConExportService { ...@@ -104,35 +104,35 @@ public class ConExportServiceImpl implements ConExportService {
String contentTitle = "96 Ying Chun Road, Pudong New Area Shanghai, China 200127"; String contentTitle = "96 Ying Chun Road, Pudong New Area Shanghai, China 200127";
SXSSFRow rowTitle = sheet.createRow(3); SXSSFRow rowTitle = sheet.createRow(3);
SXSSFCell cellTitle = rowTitle.createCell(3); SXSSFCell cellTitle = rowTitle.createCell(0);
cellTitle.setCellValue(contentTitle); cellTitle.setCellValue(contentTitle);
cellTitle.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中 cellTitle.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中
CellRangeAddress regionTitle = new CellRangeAddress(3, 3, 3, 6); CellRangeAddress regionTitle = new CellRangeAddress(3, 3, 0, 7);
sheet.addMergedRegion(regionTitle); sheet.addMergedRegion(regionTitle);
contentTitle = "中国上海市浦东新区迎春路96号"; contentTitle = "中国上海市浦东新区迎春路96号";
SXSSFRow rowTitle1 = sheet.createRow(4); SXSSFRow rowTitle1 = sheet.createRow(4);
SXSSFCell cellTitle1 = rowTitle1.createCell(3); SXSSFCell cellTitle1 = rowTitle1.createCell(0);
cellTitle1.setCellValue(contentTitle); cellTitle1.setCellValue(contentTitle);
cellTitle1.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中 cellTitle1.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中
CellRangeAddress regionTitle1 = new CellRangeAddress(4, 4, 3, 6); CellRangeAddress regionTitle1 = new CellRangeAddress(4, 4, 0, 7);
sheet.addMergedRegion(regionTitle1); sheet.addMergedRegion(regionTitle1);
contentTitle = "Tel:+86-(0)21-5056-3050\tFax:+86-(0)21-5056-3077"; contentTitle = "Tel:+86-(0)21-5056-3050\tFax:+86-(0)21-5056-3077";
SXSSFRow rowTitle2 = sheet.createRow(5); SXSSFRow rowTitle2 = sheet.createRow(5);
SXSSFCell cellTitle2 = rowTitle2.createCell(3); SXSSFCell cellTitle2 = rowTitle2.createCell(0);
cellTitle2.setCellValue(contentTitle); cellTitle2.setCellValue(contentTitle);
cellTitle2.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中 cellTitle2.setCellStyle(ExcelFormatUtil.contentCenterStyle(wb));// 黑体居中
CellRangeAddress regionTitle2 = new CellRangeAddress(5, 5, 3, 6); CellRangeAddress regionTitle2 = new CellRangeAddress(5, 5, 0, 7);
sheet.addMergedRegion(regionTitle2); sheet.addMergedRegion(regionTitle2);
SXSSFRow rowTitle3 = sheet.createRow(6); SXSSFRow rowTitle3 = sheet.createRow(6);
for (int i = 0; i < 10; i++) { for (int i = 0; i < 8; i++) {
SXSSFCell cellTitle3 = rowTitle3.createCell(i); SXSSFCell cellTitle3 = rowTitle3.createCell(i);
cellTitle3.setCellValue(""); cellTitle3.setCellValue("");
cellTitle3.setCellStyle(contentLine); cellTitle3.setCellStyle(contentLine);
} }
CellRangeAddress regionTitle3 = new CellRangeAddress(6, 6, 0, 9); CellRangeAddress regionTitle3 = new CellRangeAddress(6, 6, 0, 7);//删除最后一列
sheet.addMergedRegion(regionTitle3); sheet.addMergedRegion(regionTitle3);
ExcelFormatUtil.initTitle(sheet, ExcelFormatUtil.headSytle(wb), "对账单", 7, 0); ExcelFormatUtil.initTitle(sheet, ExcelFormatUtil.headSytle(wb), "对账单", 7, 0);
...@@ -163,20 +163,35 @@ public class ConExportServiceImpl implements ConExportService { ...@@ -163,20 +163,35 @@ public class ConExportServiceImpl implements ConExportService {
cellBpValue3.setCellStyle(contentLine); cellBpValue3.setCellStyle(contentLine);
SXSSFCell cellBpValue4 = rowBpName.createCell(4); SXSSFCell cellBpValue4 = rowBpName.createCell(4);
cellBpValue4.setCellValue(""); cellBpValue4.setCellValue("");
cellBpValue4.setCellStyle(content); cellBpValue4.setCellStyle(contentLine);
CellRangeAddress region = new CellRangeAddress(10, 10, 0, 3); SXSSFCell cellBpValue5 = rowBpName.createCell(5);
sheet.addMergedRegion(region); cellBpValue5.setCellValue(":");
cellBpValue5.setCellStyle(content);
contentExcel = " 依据您与宏菱融资租赁(上海)有限公司签订的《融资租赁合同》,(合同号:" + CellRangeAddress region = new CellRangeAddress(10, 10, 0, 4);
map.get("CONTRACT_NUMBER") + ";机号:" + map.get("MACHINE_NUMBER") + ")"; sheet.addMergedRegion(region);
ExcelFormatUtil.initContent(sheet, content, contentExcel, 12, 0);
contentExcel = "我公司已经按约向您交付了租赁物,截止" + contentExcel = " 依据您与宏菱融资租赁(上海)有限公司签订的《融资租赁合同》(合同号:" +
map.get("TODAY") + ",您已支付我公司以下性质和金额的款项:"; map.get("CONTRACT_NUMBER") + ";机号:"+ map.get("MACHINE_NUMBER") + ")我公司已经按约向您交付了租赁物,截止"+
map.get("TODAY") +",您已支付我公司以下性质和金额的款项:";
// ExcelFormatUtil.initContent(sheet, content, contentExcel, 12, 1);
SXSSFRow row1 = sheet.createRow(12);
SXSSFCell cell1 = row1.createCell(0);
//设置每一列的字段名
cell1.setCellValue(contentExcel);
content.setWrapText(true);
cell1.setCellStyle(content);
CellRangeAddress region1 = new CellRangeAddress(12, 16, 0, 7);
sheet.addMergedRegion(region1);
/* contentExcel = "机号:" + map.get("MACHINE_NUMBER") + ") 我公司已经按约向您交付了租赁物,截止" +
map.get("TODAY") + ",您已支付";
ExcelFormatUtil.initContent(sheet, content, contentExcel, 14, 0); ExcelFormatUtil.initContent(sheet, content, contentExcel, 14, 0);
contentExcel = "我公司以下性质和金额的款项:";
ExcelFormatUtil.initContent(sheet, content, contentExcel, 16, 0);*/
sheet.setColumnWidth(9, 3000); sheet.setColumnWidth(9, 3000);
if (list != null && list.size() > 1) { if (list != null && list.size() > 1) {
//logger.info(">>>>>>>>>>>>>>>>>>>>开始遍历数据组装单元格内容>>>>>>>>>>"); //logger.info(">>>>>>>>>>>>>>>>>>>>开始遍历数据组装单元格内容>>>>>>>>>>");
...@@ -189,13 +204,14 @@ public class ConExportServiceImpl implements ConExportService { ...@@ -189,13 +204,14 @@ public class ConExportServiceImpl implements ConExportService {
int[] ints = new int[]{2500, 1800, 3000, 3000, 3000, 3000, 3000, 3000}; int[] ints = new int[]{2500, 1800, 3000, 3000, 3000, 3000, 3000, 3000};
// 设置表头样式 // 设置表头样式
ExcelFormatUtil.initColumn(sheet, contentTable, strs, ints, 16); //修改表头起始行,原16
ExcelFormatUtil.initColumn(sheet, contentTable, strs, ints, 18);
//logger.info(">>>>>>>>>>>>>>>>>>>>表头样式设置完成>>>>>>>>>>"); //logger.info(">>>>>>>>>>>>>>>>>>>>表头样式设置完成>>>>>>>>>>");
double amount = 0; double amount = 0;
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
LinkedHashMap<String, Object> map1 = (LinkedHashMap<String, Object>) list.get(i); LinkedHashMap<String, Object> map1 = (LinkedHashMap<String, Object>) list.get(i);
SXSSFRow row = sheet.createRow(i + 17); SXSSFRow row = sheet.createRow(i + 19);
int j = 1; int j = 0;
SXSSFCell cell = row.createCell(j++); SXSSFCell cell = row.createCell(j++);
if (map1.get("CF_ITEM_N") != null) { if (map1.get("CF_ITEM_N") != null) {
...@@ -330,19 +346,23 @@ public class ConExportServiceImpl implements ConExportService { ...@@ -330,19 +346,23 @@ public class ConExportServiceImpl implements ConExportService {
//logger.info(">>>>>>>>>>>>>>>>>>>>结束遍历数据组装单元格内容>>>>>>>>>>"); //logger.info(">>>>>>>>>>>>>>>>>>>>结束遍历数据组装单元格内容>>>>>>>>>>");
contentExcel = "由于入账处理需要时间,以上还款金额可能未包含最近一次的还款记录。"; contentExcel = "由于入账处理需要时间,以上还款金额可能未包含最近一次的还款记录。";
ExcelFormatUtil.initContent(sheet, content, contentExcel, list.size() + 16 + 2, 1); ExcelFormatUtil.initContent(sheet, content, contentExcel, list.size() + 18 + 2, 0);
contentExcel = "请参考。"; contentExcel = "请参考。";
ExcelFormatUtil.initContent(sheet, content, contentExcel, list.size() + 16 + 4, 1); ExcelFormatUtil.initContent(sheet, content, contentExcel, list.size() + 18 + 4, 0);
contentExcel = "宏菱融资租赁(上海)有限公司"; contentExcel = "宏菱融资租赁(上海)有限公司";
ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 16 + 6, 6); ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 18 + 6, 4);
contentExcel = "(公章)"; contentExcel = "(公章)";
ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 16 + 8, 6); ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 18 + 8, 4);
contentExcel = (String) map.get("TODAY"); contentExcel = (String) map.get("TODAY");
ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 16 + 10, 6); ExcelFormatUtil.initContent(sheet, ExcelFormatUtil.contentCenterStyle(wb), contentExcel, list.size() + 18 + 10, 4);
//调整打印格式
PrintSetup ps = sheet.getPrintSetup();
ps.setFitWidth((short) 0);
sheet.setFitToPage(true);
try { try {
outputResponse(response, wb, "对账单(" + (String) map.get("BP_NAME") + (String) map.get("CONTRACT_NUMBER") + ").xlsx"); outputResponse(response, wb, "对账单(" + (String) map.get("BP_NAME") + (String) map.get("CONTRACT_NUMBER") + ").xlsx");
} catch (Exception e) { } catch (Exception e) {
......
...@@ -61,7 +61,7 @@ public class ExcelFormatUtil { ...@@ -61,7 +61,7 @@ public class ExcelFormatUtil {
Font font1 = wb.createFont(); Font font1 = wb.createFont();
font1.setFontName("黑体"); font1.setFontName("黑体");
style1.setFont(font1); style1.setFont(font1);
//style1.setWrapText(true); style1.setWrapText(true);
style1.setAlignment(HorizontalAlignment.LEFT); style1.setAlignment(HorizontalAlignment.LEFT);
style1.setVerticalAlignment(VerticalAlignment.CENTER); style1.setVerticalAlignment(VerticalAlignment.CENTER);
return style1; return style1;
...@@ -117,7 +117,7 @@ public class ExcelFormatUtil { ...@@ -117,7 +117,7 @@ public class ExcelFormatUtil {
//设置每一列的字段名 //设置每一列的字段名
cell.setCellValue(title); cell.setCellValue(title);
cell.setCellStyle(header); cell.setCellStyle(header);
CellRangeAddress region = new CellRangeAddress(firstRow, firstRow+1, firstrCol, 9); CellRangeAddress region = new CellRangeAddress(firstRow, firstRow+1, firstrCol, 7);
sheet.addMergedRegion(region); sheet.addMergedRegion(region);
} }
...@@ -130,7 +130,7 @@ public class ExcelFormatUtil { ...@@ -130,7 +130,7 @@ public class ExcelFormatUtil {
//设置每一列的字段名 //设置每一列的字段名
cell.setCellValue(content); cell.setCellValue(content);
cell.setCellStyle(contentType); cell.setCellStyle(contentType);
CellRangeAddress region = new CellRangeAddress(firstRow, firstRow, firstrCol, 9); CellRangeAddress region = new CellRangeAddress(firstRow, firstRow, firstrCol, 7);//删除最后一列
sheet.addMergedRegion(region); sheet.addMergedRegion(region);
} }
...@@ -139,11 +139,11 @@ public class ExcelFormatUtil { ...@@ -139,11 +139,11 @@ public class ExcelFormatUtil {
SXSSFRow row = sheet.createRow(firstRow); SXSSFRow row = sheet.createRow(firstRow);
for(int j = 1;j<=title.length; j++) { for(int j = 1;j<=title.length; j++) {
SXSSFCell cell = row.createCell(j); SXSSFCell cell = row.createCell(j-1);
//设置每一列的字段名 //设置每一列的字段名
cell.setCellValue(title[j-1]); cell.setCellValue(title[j-1]);
cell.setCellStyle(contentTable); cell.setCellStyle(contentTable);
sheet.setColumnWidth(j, titleLength[j-1]); sheet.setColumnWidth(j-1, titleLength[j-1]);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment