Browse Source

remove unused code in CustomJRXlsxExporter

sunyj 8 years ago
parent
commit
cd3fd74f45

+ 55 - 201
src/main/java/com/uas/report/jasperreports/engine/export/CustomJRXlsxExporter.java

@@ -1,220 +1,74 @@
 package com.uas.report.jasperreports.engine.export;
 package com.uas.report.jasperreports.engine.export;
 
 
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-
-import org.apache.poi.ss.usermodel.IndexedColors;
-
 import com.uas.report.util.ObjectUtils;
 import com.uas.report.util.ObjectUtils;
-import com.uas.report.util.StringUtils;
-
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRException;
-import net.sf.jasperreports.engine.JRPrintText;
 import net.sf.jasperreports.engine.export.Cut;
 import net.sf.jasperreports.engine.export.Cut;
-import net.sf.jasperreports.engine.export.JRExporterGridCell;
 import net.sf.jasperreports.engine.export.XlsRowLevelInfo;
 import net.sf.jasperreports.engine.export.XlsRowLevelInfo;
 import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
 import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderHelper;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderHelper;
 import net.sf.jasperreports.engine.export.ooxml.XlsxStyleHelper;
 import net.sf.jasperreports.engine.export.ooxml.XlsxStyleHelper;
 import net.sf.jasperreports.engine.util.FileBufferedWriter;
 import net.sf.jasperreports.engine.util.FileBufferedWriter;
 
 
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+
 /**
 /**
  * 报表导出为Xls
  * 报表导出为Xls
- * 
+ *
  * @author sunyj
  * @author sunyj
  * @since 2016年12月14日 下午8:10:56
  * @since 2016年12月14日 下午8:10:56
  */
  */
 public class CustomJRXlsxExporter extends JRXlsxExporter {
 public class CustomJRXlsxExporter extends JRXlsxExporter {
 
 
-	/**
-	 * 单元格宽度
-	 */
-	public static final int CELL_WIDTH = 50;
-
-	/**
-	 * 单元格高度
-	 */
-	public static final int CELL_HEIGHT = 12;
-
-	/**
-	 * 单元格边框宽度
-	 */
-	public static final short CELL_BORDER_WIDTH = 1;
-
-	/**
-	 * 单元格边框颜色
-	 */
-	public static final short CELL_BORDER_CORLOR = IndexedColors.GREY_25_PERCENT.index;
-
-	/**
-	 * 是否自定义单元格格式
-	 */
-	private boolean customCellStyle = false;
-
-	public CustomJRXlsxExporter(boolean ifCustomCellStyle) {
-		this.customCellStyle = ifCustomCellStyle;
-	}
-
-	@Override
-	protected void setColumnWidth(int col, int width, boolean autoFit) {
-		if (customCellStyle) {
-			width = CELL_WIDTH;
-		}
-		super.setColumnWidth(col, width, autoFit);
-	}
-
-	@Override
-	protected void setRowHeight(int rowIndex, int rowHeight, Cut yCut, XlsRowLevelInfo levelInfo) throws JRException {
-		if (customCellStyle) {
-			rowHeight = CELL_HEIGHT;
-		}
-		super.setRowHeight(rowIndex, rowHeight, yCut, levelInfo);
-	}
-
-	// @Override
-	// protected HSSFCellStyle getLoadedCellStyle(StyleInfo style) {
-	// HSSFCellStyle cellStyle = super.getLoadedCellStyle(style);
-	// if (customCellStyle) {
-	// cellStyle.setBorderTop(CELL_BORDER_WIDTH);
-	// cellStyle.setBorderLeft(CELL_BORDER_WIDTH);
-	// cellStyle.setBorderBottom(CELL_BORDER_WIDTH);
-	// cellStyle.setBorderRight(CELL_BORDER_WIDTH);
-	// cellStyle.setTopBorderColor(CELL_BORDER_CORLOR);
-	// cellStyle.setLeftBorderColor(CELL_BORDER_CORLOR);
-	// cellStyle.setBottomBorderColor(CELL_BORDER_CORLOR);
-	// cellStyle.setRightBorderColor(CELL_BORDER_CORLOR);
-	// }
-	// return cellStyle;
-	// }
-
-	@Override
-	public void exportText(JRPrintText text, JRExporterGridCell gridCell, int colIndex, int rowIndex)
-			throws JRException {
-		// GridCellStyle style = gridCell.getStyle();
-		// JRLineBox box = style.getBox();
-		// System.out.println(box.getPen().getLineWidth()+" "
-		// +box.getPen().getOwnLineWidth()+" " +box.getPen().getLineColor()+"
-		// "+box.getPen().getOwnLineColor()+"
-		// "+box.getPen().getLineStyleValue()+"
-		// "+box.getPen().getOwnLineStyleValue());
-		// System.out.println(box.getTopPen().getLineWidth()+" "
-		// +box.getTopPen().getOwnLineWidth()+" "
-		// +box.getTopPen().getLineColor()+"
-		// "+box.getTopPen().getOwnLineColor()+"
-		// "+box.getTopPen().getLineStyleValue()+"
-		// "+box.getTopPen().getOwnLineStyleValue());
-		// System.out.println(box.getBottomPen().getLineWidth()+" "
-		// +box.getBottomPen().getOwnLineWidth()+" "
-		// +box.getBottomPen().getLineColor()+"
-		// "+box.getBottomPen().getOwnLineColor()+"
-		// "+box.getBottomPen().getLineStyleValue()+"
-		// "+box.getBottomPen().getOwnLineStyleValue());
-		// System.out.println(box.getLeftPen().getLineWidth()+" "
-		// +box.getLeftPen().getOwnLineWidth()+" "
-		// +box.getLeftPen().getLineColor()+"
-		// "+box.getLeftPen().getOwnLineColor()+"
-		// "+box.getLeftPen().getLineStyleValue()+"
-		// "+box.getLeftPen().getOwnLineStyleValue());
-		// System.out.println(box.getRightPen().getLineWidth()+" "
-		// +box.getRightPen().getOwnLineWidth()+" "
-		// +box.getRightPen().getLineColor()+"
-		// "+box.getRightPen().getOwnLineColor()+"
-		// "+box.getRightPen().getLineStyleValue()+"
-		// "+box.getRightPen().getOwnLineStyleValue());
-		// JRBoxPen pen = box.getPen();
-		// JRBoxPen topPen = box.getTopPen();
-		// JRBoxPen rightPen = box.getRightPen();
-		// JRBoxPen bottomPen = box.getBottomPen();
-		// JRBoxPen leftPen = box.getLeftPen();
-		//
-		// pen.setLineWidth(1);
-		// topPen.setLineWidth(1);
-		// rightPen.setLineWidth(1);
-		// bottomPen.setLineWidth(1);
-		// leftPen.setLineWidth(1);
-		//
-		// box.copyPen(pen);
-		// box.copyTopPen(topPen);
-		// box.copyRightPen(rightPen);
-		// box.copyBottomPen(bottomPen);
-		// box.copyLeftPen(leftPen);
-		super.exportText(text, gridCell, colIndex, rowIndex);
-	}
-
-	// @Override
-	// protected void createTextCell(JRPrintText textElement, JRExporterGridCell
-	// gridCell, int colIndex, int rowIndex,
-	// JRStyledText styledText, StyleInfo baseStyle, short forecolor) throws
-	// JRException {
-	// if (customCellStyle) {
-	// String textStr = styledText.getText();
-	// TextValue textValue = getTextValue(textElement, textStr);
-	// // 类型为String,但是实际值为数值,需设置为字符串类型,否则会提示转为数值型
-	// if ((textValue instanceof StringTextValue && isNumber(textStr)) ||
-	// textValue instanceof NumberTextValue) {
-	// baseStyle.setDataFormat(dataFormat.getFormat("@"));
-	// }
-	// super.createTextCell(textElement, gridCell, colIndex, rowIndex,
-	// styledText, baseStyle, forecolor);
-	//
-	// // 数值类型需明确指定,否则会提示转为数值型
-	// if (textValue instanceof NumberTextValue) {
-	// setNumberTextValue(textStr);
-	// }
-	// } else {
-	// super.createTextCell(textElement, gridCell, colIndex, rowIndex,
-	// styledText, baseStyle, forecolor);
-	// }
-	// }
-
-	/**
-	 * 判断字符串是否为数值
-	 * 
-	 * @param textStr
-	 * @return
-	 */
-	private boolean isNumber(String textStr) {
-		if (StringUtils.isEmpty(textStr)) {
-			return false;
-		}
-		try {
-			// 数值可能为1,320.6的形式
-			Double.parseDouble(textStr.replaceAll(",", ""));
-			return true;
-		} catch (NumberFormatException e) {
-			return false;
-		}
-	}
-
-	/**
-	 * 设置单元格格式为数值类型
-	 * 
-	 * @param textStr
-	 */
-	// private void setNumberTextValue(String textStr) {
-	// if (isNumber(textStr)) {
-	// cell.setCellValue(Double.parseDouble(textStr.replaceAll(",", "")));
-	// cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
-	// }
-	// }
-
-	@Override
-	protected void openWorkbook(OutputStream os) throws JRException {
-		// TODO Auto-generated method stub
-		super.openWorkbook(os);
-		// styleHelper=new CustomXlsxStyleHelper(jasperReportsContext,
-		// xlsxZip.getStylesEntry().getWriter(),
-		// getExporterKey());
-		FileBufferedWriter bordersWriter = (FileBufferedWriter) ObjectUtils.recursivelyGetValue("bordersWriter",
-				styleHelper);
-		XlsxBorderHelper borderHelper = new CustomXlsxBorderHelper(jasperReportsContext, bordersWriter);
-		Field borderHelperField = ObjectUtils.recursivelyGetField("borderHelper", XlsxStyleHelper.class);
-		borderHelperField.setAccessible(true);
-		try {
-			borderHelperField.set(styleHelper, borderHelper);
-		} catch (Throwable e) {
-			throw new IllegalArgumentException("修改 XlsxStyleHelper 失败", e);
-		}
-		borderHelperField.setAccessible(false);
-	}
+    /**
+     * 单元格宽度
+     */
+    public static final int CELL_WIDTH = 50;
+
+    /**
+     * 单元格高度
+     */
+    public static final int CELL_HEIGHT = 12;
+
+    /**
+     * 是否自定义单元格格式
+     */
+    private boolean customCellStyle = false;
+
+    public CustomJRXlsxExporter(boolean ifCustomCellStyle) {
+        this.customCellStyle = ifCustomCellStyle;
+    }
+
+    @Override
+    protected void setColumnWidth(int col, int width, boolean autoFit) {
+        if (customCellStyle) {
+            width = CELL_WIDTH;
+        }
+        super.setColumnWidth(col, width, autoFit);
+    }
+
+    @Override
+    protected void setRowHeight(int rowIndex, int rowHeight, Cut yCut, XlsRowLevelInfo levelInfo) throws JRException {
+        if (customCellStyle) {
+            rowHeight = CELL_HEIGHT;
+        }
+        super.setRowHeight(rowIndex, rowHeight, yCut, levelInfo);
+    }
+
+    @Override
+    protected void openWorkbook(OutputStream os) throws JRException {
+        super.openWorkbook(os);
+        FileBufferedWriter bordersWriter = (FileBufferedWriter) ObjectUtils.recursivelyGetValue("bordersWriter",
+                styleHelper);
+        XlsxBorderHelper borderHelper = new CustomXlsxBorderHelper(jasperReportsContext, bordersWriter);
+        // 通过反射替换 styleHelper 中的 borderHelper 为 CustomXlsxBorderHelper 类型
+        Field borderHelperField = ObjectUtils.recursivelyGetField("borderHelper", XlsxStyleHelper.class);
+        borderHelperField.setAccessible(true);
+        try {
+            borderHelperField.set(styleHelper, borderHelper);
+        } catch (Throwable e) {
+            throw new IllegalArgumentException("替换 borderHelper 失败", e);
+        }
+        borderHelperField.setAccessible(false);
+    }
 }
 }

+ 61 - 51
src/main/java/com/uas/report/jasperreports/engine/export/CustomXlsxBorderHelper.java

@@ -1,9 +1,5 @@
 package com.uas.report.jasperreports.engine.export;
 package com.uas.report.jasperreports.engine.export;
 
 
-import java.io.Writer;
-import java.util.HashMap;
-import java.util.Map;
-
 import net.sf.jasperreports.engine.JRLineBox;
 import net.sf.jasperreports.engine.JRLineBox;
 import net.sf.jasperreports.engine.JRPen;
 import net.sf.jasperreports.engine.JRPen;
 import net.sf.jasperreports.engine.JasperReportsContext;
 import net.sf.jasperreports.engine.JasperReportsContext;
@@ -12,60 +8,74 @@ import net.sf.jasperreports.engine.export.JRXlsAbstractExporter;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderHelper;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderHelper;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderInfo;
 import net.sf.jasperreports.engine.export.ooxml.XlsxBorderInfo;
 
 
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
 public class CustomXlsxBorderHelper extends XlsxBorderHelper {
 public class CustomXlsxBorderHelper extends XlsxBorderHelper {
 
 
-	private Map<String, Integer> borderCache = new HashMap<String, Integer>();
+    /**
+     * 单元格边框宽度
+     */
+    public static final String CELL_BORDER_WIDTH = "thin";
+
+    /**
+     * 单元格边框颜色 25% GREY
+     */
+    public static final String CELL_BORDER_CORLOR = "AFABAB";
+
+    private Map<String, Integer> borderCache = new HashMap<String, Integer>();
 
 
-	public CustomXlsxBorderHelper(JasperReportsContext jasperReportsContext, Writer writer) {
-		super(jasperReportsContext, writer);
-	}
+    public CustomXlsxBorderHelper(JasperReportsContext jasperReportsContext, Writer writer) {
+        super(jasperReportsContext, writer);
+    }
 
 
-	@Override
-	public int getBorder(JRExporterGridCell gridCell, JRXlsAbstractExporter.SheetInfo sheetInfo) {
-		if (Boolean.TRUE.equals(sheetInfo.ignoreCellBackground) || gridCell.getBox() == null) {
-			return -1;
-		}
+    @Override
+    public int getBorder(JRExporterGridCell gridCell, JRXlsAbstractExporter.SheetInfo sheetInfo) {
+        if (Boolean.TRUE.equals(sheetInfo.ignoreCellBackground) || gridCell.getBox() == null) {
+            return -1;
+        }
 
 
-		XlsxBorderInfo borderInfo = new XlsxBorderInfo(gridCell.getBox());
-		Integer borderIndex = borderCache.get(borderInfo.getId());
-		if (borderIndex == null) {
-			borderIndex = Integer.valueOf(borderCache.size());
-			export(borderInfo);
-			borderCache.put(borderInfo.getId(), borderIndex);
-		}
-		return borderIndex.intValue();
-	}
+        XlsxBorderInfo borderInfo = new XlsxBorderInfo(gridCell.getBox());
+        Integer borderIndex = borderCache.get(borderInfo.getId());
+        if (borderIndex == null) {
+            borderIndex = borderCache.size();
+            export(borderInfo);
+            borderCache.put(borderInfo.getId(), borderIndex);
+        }
+        return borderIndex;
+    }
 
 
-	@Override
-	public void export(JRLineBox box) {
-		if (box != null) {
-			export(new XlsxBorderInfo(box));
-		}
-	}
+    @Override
+    public void export(JRLineBox box) {
+        if (box != null) {
+            export(new XlsxBorderInfo(box));
+        }
+    }
 
 
-	@Override
-	public void export(JRPen pen) {
-		if (pen != null) {
-			export(new XlsxBorderInfo(pen));
-		}
-	}
+    @Override
+    public void export(JRPen pen) {
+        if (pen != null) {
+            export(new XlsxBorderInfo(pen));
+        }
+    }
 
 
-	private void export(XlsxBorderInfo info) {
-		{
-			write("<border>");
-			exportBorder(info, "left");
-			exportBorder(info, "right");
-			exportBorder(info, "top");
-			exportBorder(info, "bottom");
-			write("<diagonal/></border>\n");
-		}
-	}
+    private void export(XlsxBorderInfo info) {
+        {
+            write("<border>");
+            exportBorder(info, "left");
+            exportBorder(info, "right");
+            exportBorder(info, "top");
+            exportBorder(info, "bottom");
+            write("<diagonal/></border>\n");
+        }
+    }
 
 
-	private void exportBorder(XlsxBorderInfo info, String side) {
-		write("<" + side);
-		write(" style=\"thin\">");
-		write(">");
-		write("<color rgb=\"AFABAB\"/>");
-		write("</" + side + ">");
-	}
+    private void exportBorder(XlsxBorderInfo info, String side) {
+        write("<" + side);
+        write(" style=\"" + CELL_BORDER_WIDTH + "\">");
+        write(">");
+        write("<color rgb=\"" + CELL_BORDER_CORLOR + "\"/>");
+        write("</" + side + ">");
+    }
 }
 }