| @@ -37,6 +37,7 @@ public class FileLoaderImpl implements IFileLoader { | |||
| private static final Logger LOGGER = LoggerFactory.getLogger(FileLoaderImpl.class); | |||
| @Override | |||
| public byte[] getFile(String url) { | |||
| InputStream fileis = null; | |||
| ByteArrayOutputStream baos = null; | |||
| @@ -52,8 +52,9 @@ public final class POICacheManager { | |||
| .build(new CacheLoader<String, byte[]>() { | |||
| @Override | |||
| public byte[] load(String url) throws Exception { | |||
| if (LOCAL_FILELOADER.get() != null) | |||
| if (LOCAL_FILELOADER.get() != null) { | |||
| return LOCAL_FILELOADER.get().getFile(url); | |||
| } | |||
| return fileLoder.getFile(url); | |||
| } | |||
| }); | |||
| @@ -81,8 +82,9 @@ public final class POICacheManager { | |||
| * @param fileLoder | |||
| */ | |||
| public static void setFileLoderOnce(IFileLoader fileLoder) { | |||
| if (fileLoder != null) | |||
| if (fileLoder != null) { | |||
| LOCAL_FILELOADER.set(fileLoder); | |||
| } | |||
| } | |||
| public static void setLoadingCache(LoadingCache<String, byte[]> loadingCache) { | |||
| @@ -37,7 +37,7 @@ public class ExcelBaseEntity { | |||
| /** | |||
| * 对应type | |||
| */ | |||
| private int type = BaseEntityTypeConstants.StringType; | |||
| private int type = BaseEntityTypeConstants.STRING_TYPE; | |||
| /** | |||
| * 数据库格式 | |||
| */ | |||
| @@ -212,18 +212,23 @@ public class ExcelExportEntity extends ExcelBaseEntity implements Comparable<Exc | |||
| @Override | |||
| public boolean equals(Object obj) { | |||
| if (this == obj) | |||
| if (this == obj) { | |||
| return true; | |||
| if (obj == null) | |||
| } | |||
| if (obj == null) { | |||
| return false; | |||
| if (getClass() != obj.getClass()) | |||
| } | |||
| if (getClass() != obj.getClass()) { | |||
| return false; | |||
| } | |||
| ExcelExportEntity other = (ExcelExportEntity) obj; | |||
| if (key == null) { | |||
| if (other.key != null) | |||
| if (other.key != null) { | |||
| return false; | |||
| } else if (!key.equals(other.key)) | |||
| } | |||
| } else if (!key.equals(other.key)) { | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| } | |||
| @@ -11,7 +11,7 @@ package cn.afterturn.easypoi.excel.entity.vo; | |||
| * | |||
| */ | |||
| public interface BaseEntityTypeConstants { | |||
| public final static Integer StringType = 1; | |||
| public final static Integer DoubleType = 10; | |||
| public final static Integer ImageType = 3; | |||
| public final static Integer STRING_TYPE = 1; | |||
| public final static Integer DOUBLE_TYPE = 10; | |||
| public final static Integer IMAGE_TYPE = 3; | |||
| } | |||
| @@ -68,7 +68,7 @@ public class ExcelBatchExportServer extends ExcelExportServer { | |||
| excelParams.add(indexExcelEntity(entity)); | |||
| } | |||
| // 得到所有字段 | |||
| Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||
| Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | |||
| ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | |||
| String targetId = etarget == null ? null : etarget.value(); | |||
| getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, | |||
| @@ -104,6 +104,7 @@ public class ExcelBatchExportServer extends ExcelExportServer { | |||
| return workbook; | |||
| } | |||
| @Override | |||
| protected void insertDataToSheet(Workbook workbook, ExportParams entity, | |||
| List<ExcelExportEntity> entityList, Collection<?> dataSet, | |||
| Sheet sheet) { | |||
| @@ -34,7 +34,7 @@ import cn.afterturn.easypoi.excel.annotation.ExcelTarget; | |||
| import cn.afterturn.easypoi.excel.entity.ExportParams; | |||
| import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; | |||
| import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | |||
| import cn.afterturn.easypoi.excel.export.base.ExportBaseServer; | |||
| import cn.afterturn.easypoi.excel.export.base.BaseExportServer; | |||
| import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler; | |||
| import cn.afterturn.easypoi.exception.excel.ExcelExportException; | |||
| import cn.afterturn.easypoi.exception.excel.enums.ExcelExportEnum; | |||
| @@ -46,10 +46,10 @@ import cn.afterturn.easypoi.util.PoiPublicUtil; | |||
| * | |||
| * @author JueYue 2014年6月17日 下午5:30:54 | |||
| */ | |||
| public class ExcelExportServer extends ExportBaseServer { | |||
| public class ExcelExportServer extends BaseExportServer { | |||
| // 最大行数,超过自动多Sheet | |||
| private int MAX_NUM = 60000; | |||
| private static int MAX_NUM = 60000; | |||
| protected int createHeaderAndTitle(ExportParams entity, Sheet sheet, Workbook workbook, | |||
| List<ExcelExportEntity> excelParams) { | |||
| @@ -175,8 +175,9 @@ public class ExcelExportServer extends ExportBaseServer { | |||
| Object t = its.next(); | |||
| index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight); | |||
| tempList.add(t); | |||
| if (index >= MAX_NUM) | |||
| if (index >= MAX_NUM) { | |||
| break; | |||
| } | |||
| } | |||
| if (entity.getFreezeCol() != 0) { | |||
| sheet.createFreezePane(entity.getFreezeCol(), 0, entity.getFreezeCol(), 0); | |||
| @@ -28,8 +28,6 @@ import org.apache.poi.ss.usermodel.Workbook; | |||
| import org.apache.poi.ss.util.CellRangeAddress; | |||
| import org.apache.poi.xssf.usermodel.XSSFClientAnchor; | |||
| import org.apache.poi.xssf.usermodel.XSSFRichTextString; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import java.text.DecimalFormat; | |||
| import java.util.Collection; | |||
| @@ -56,7 +54,7 @@ import cn.afterturn.easypoi.util.PoiPublicUtil; | |||
| * @author JueYue 2014年6月17日 下午6:15:13 | |||
| */ | |||
| @SuppressWarnings("unchecked") | |||
| public abstract class ExportBaseServer extends ExportCommonServer { | |||
| public abstract class BaseExportServer extends ExportCommonServer { | |||
| private int currentIndex = 0; | |||
| @@ -100,7 +98,7 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| } else { | |||
| Object value = getCellValue(entity, t); | |||
| if (entity.getType() == BaseEntityTypeConstants.StringType) { | |||
| if (entity.getType() == BaseEntityTypeConstants.STRING_TYPE) { | |||
| createStringCell(row, cellNum++, value == null ? "" : value.toString(), | |||
| index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), | |||
| entity); | |||
| @@ -110,7 +108,7 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| row.getSheet().getWorkbook().getCreationHelper(), t, | |||
| entity.getName(), value)); | |||
| } | |||
| } else if (entity.getType() == BaseEntityTypeConstants.DoubleType) { | |||
| } else if (entity.getType() == BaseEntityTypeConstants.DOUBLE_TYPE) { | |||
| createDoubleCell(row, cellNum++, value == null ? "" : value.toString(), | |||
| index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), | |||
| entity); | |||
| @@ -193,7 +191,7 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| } | |||
| private int createIndexCell(Row row, int index, ExcelExportEntity excelExportEntity) { | |||
| if (excelExportEntity.getName() != null && excelExportEntity.getName().equals("序号") && excelExportEntity.getFormat() != null | |||
| if (excelExportEntity.getName() != null && "序号".equals(excelExportEntity.getName()) && excelExportEntity.getFormat() != null | |||
| && excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) { | |||
| createStringCell(row, 0, currentIndex + "", | |||
| index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null); | |||
| @@ -221,7 +219,7 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| for (int k = 0, paramSize = excelParams.size(); k < paramSize; k++) { | |||
| entity = excelParams.get(k); | |||
| Object value = getCellValue(entity, obj); | |||
| if (entity.getType() == BaseEntityTypeConstants.StringType) { | |||
| if (entity.getType() == BaseEntityTypeConstants.STRING_TYPE) { | |||
| createStringCell(row, cellNum++, value == null ? "" : value.toString(), | |||
| row.getRowNum() % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), | |||
| entity); | |||
| @@ -231,7 +229,7 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(), | |||
| value)); | |||
| } | |||
| } else if (entity.getType() == BaseEntityTypeConstants.DoubleType) { | |||
| } else if (entity.getType() == BaseEntityTypeConstants.DOUBLE_TYPE) { | |||
| createDoubleCell(row, cellNum++, value == null ? "" : value.toString(), | |||
| index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity); | |||
| if (entity.isHyperlink()) { | |||
| @@ -257,13 +255,13 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| cell.setCellValue(Double.parseDouble(text)); | |||
| cell.setCellType(Cell.CELL_TYPE_NUMERIC); | |||
| } else { | |||
| RichTextString Rtext; | |||
| RichTextString rtext; | |||
| if (type.equals(ExcelType.HSSF)) { | |||
| Rtext = new HSSFRichTextString(text); | |||
| rtext = new HSSFRichTextString(text); | |||
| } else { | |||
| Rtext = new XSSFRichTextString(text); | |||
| rtext = new XSSFRichTextString(text); | |||
| } | |||
| cell.setCellValue(Rtext); | |||
| cell.setCellValue(rtext); | |||
| } | |||
| if (style != null) { | |||
| cell.setCellStyle(style); | |||
| @@ -330,9 +328,9 @@ public abstract class ExportBaseServer extends ExportCommonServer { | |||
| */ | |||
| public int getImageType(byte[] value) { | |||
| String type = PoiPublicUtil.getFileExtendName(value); | |||
| if (type.equalsIgnoreCase("JPG")) { | |||
| if ("JPG".equalsIgnoreCase(type)) { | |||
| return Workbook.PICTURE_TYPE_JPEG; | |||
| } else if (type.equalsIgnoreCase("PNG")) { | |||
| } else if ("PNG".equalsIgnoreCase(type)) { | |||
| return Workbook.PICTURE_TYPE_PNG; | |||
| } | |||
| @@ -47,7 +47,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; | |||
| import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; | |||
| import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; | |||
| import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams; | |||
| import cn.afterturn.easypoi.excel.export.base.ExportBaseServer; | |||
| import cn.afterturn.easypoi.excel.export.base.BaseExportServer; | |||
| import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler; | |||
| import cn.afterturn.easypoi.excel.export.template.TemplateSumHanlder.TemplateSumEntity; | |||
| import cn.afterturn.easypoi.excel.html.helper.MergedRegionHelper; | |||
| @@ -64,7 +64,7 @@ import cn.afterturn.easypoi.util.PoiSheetUtility; | |||
| * 2013-10-17 | |||
| * @version 1.0 | |||
| */ | |||
| public final class ExcelExportOfTemplateUtil extends ExportBaseServer { | |||
| public final class ExcelExportOfTemplateUtil extends BaseExportServer { | |||
| private static final Logger LOGGER = LoggerFactory | |||
| .getLogger(ExcelExportOfTemplateUtil.class); | |||
| @@ -517,8 +517,9 @@ public final class ExcelExportOfTemplateUtil extends ExportBaseServer { | |||
| : getStyles(true, | |||
| size >= j - columnIndex ? null : columns.get(j - columnIndex)); | |||
| //返回的styler不为空时才使用,否则使用Excel设置的,更加推荐Excel设置的样式 | |||
| if (style != null) | |||
| if (style != null) { | |||
| row.getCell(j).setCellStyle(style); | |||
| } | |||
| } | |||
| } | |||
| @@ -78,8 +78,9 @@ public class TemplateSumHanlder { | |||
| } | |||
| public void addValueOfKey(String key, String val) { | |||
| if (StringUtils.isNoneEmpty(key)) | |||
| if (StringUtils.isNoneEmpty(key)) { | |||
| sumMap.get(key).setValue(sumMap.get(key).getValue() + Double.valueOf(val)); | |||
| } | |||
| } | |||
| public List<TemplateSumEntity> getDataList() { | |||
| @@ -88,7 +88,7 @@ public class ExcelChartBuildService | |||
| ExcelGraphElement categoryElement=graph.getCategory(); | |||
| ChartDataSource categoryChart; | |||
| if(categoryElement!=null&&categoryElement.getElementType()==ExcelGraphElementType.StringType){ | |||
| if(categoryElement!=null&& categoryElement.getElementType().equals(ExcelGraphElementType.STRING_TYPE)){ | |||
| categoryChart=DataSources.fromStringCellRange(dataSourceSheet, new CellRangeAddress(categoryElement.getStartRowNum(),categoryElement.getEndRowNum(),categoryElement.getStartColNum(),categoryElement.getEndColNum())); | |||
| }else{ | |||
| categoryChart=DataSources.fromNumericCellRange(dataSourceSheet, new CellRangeAddress(categoryElement.getStartRowNum(),categoryElement.getEndRowNum(),categoryElement.getStartColNum(),categoryElement.getEndColNum())); | |||
| @@ -103,7 +103,7 @@ public class ExcelChartBuildService | |||
| } | |||
| } | |||
| if(graph.getGraphType()==ExcelGraphType.LineChart){ | |||
| if(graph.getGraphType().equals(ExcelGraphType.LINE_CHART)){ | |||
| LineChartData data = chart.getChartDataFactory().createLineChartData(); | |||
| buildLineChartData(data, categoryChart, chartValueList, graph.getTitle()); | |||
| chart.plot(data, bottomAxis, leftAxis); | |||
| @@ -220,8 +220,8 @@ public class ExcelChartBuildService | |||
| { | |||
| int i=0; | |||
| for(ChartDataSource<Number> source:chartValueList){ | |||
| String _title=title.get(i); | |||
| if(StringUtils.isNotBlank(_title)){ | |||
| String temp_title=title.get(i); | |||
| if(StringUtils.isNotBlank(temp_title)){ | |||
| //data.addSerie(categoryChart, source).setTitle(_title); | |||
| }else{ | |||
| //data.addSerie(categoryChart, source); | |||
| @@ -249,9 +249,9 @@ public class ExcelChartBuildService | |||
| { | |||
| int i=0; | |||
| for(ChartDataSource<Number> source:chartValueList){ | |||
| String _title=title.get(i); | |||
| if(StringUtils.isNotBlank(_title)){ | |||
| data.addSerie(categoryChart, source).setTitle(_title); | |||
| String temp_title=title.get(i); | |||
| if(StringUtils.isNotBlank(temp_title)){ | |||
| data.addSerie(categoryChart, source).setTitle(temp_title); | |||
| }else{ | |||
| data.addSerie(categoryChart, source); | |||
| } | |||
| @@ -11,6 +11,6 @@ package cn.afterturn.easypoi.excel.graph.constant; | |||
| */ | |||
| public interface ExcelGraphElementType | |||
| { | |||
| public static final Integer StringType=1; | |||
| public static final Integer NumericType=2; | |||
| public static final Integer STRING_TYPE =1; | |||
| public static final Integer NUMERIC_TYPE =2; | |||
| } | |||
| @@ -11,7 +11,7 @@ package cn.afterturn.easypoi.excel.graph.constant; | |||
| */ | |||
| public interface ExcelGraphType | |||
| { | |||
| public static final Integer LineChart=1; | |||
| public static final Integer ScatterChart=2; | |||
| public static final Integer LINE_CHART =1; | |||
| public static final Integer SCATTER_CHART =2; | |||
| } | |||
| @@ -20,10 +20,11 @@ public class ExcelGraphDefined implements ExcelGraph | |||
| private ExcelGraphElement category; | |||
| public List<ExcelGraphElement> valueList=Lists.newArrayList(); | |||
| public List<ExcelTitleCell> titleCell=Lists.newArrayList(); | |||
| private Integer graphType=ExcelGraphType.LineChart; | |||
| private Integer graphType=ExcelGraphType.LINE_CHART; | |||
| public List<String> title=Lists.newArrayList(); | |||
| public ExcelGraphElement getCategory() | |||
| @Override | |||
| public ExcelGraphElement getCategory() | |||
| { | |||
| return category; | |||
| } | |||
| @@ -31,7 +32,8 @@ public class ExcelGraphDefined implements ExcelGraph | |||
| { | |||
| this.category = category; | |||
| } | |||
| public List<ExcelGraphElement> getValueList() | |||
| @Override | |||
| public List<ExcelGraphElement> getValueList() | |||
| { | |||
| return valueList; | |||
| } | |||
| @@ -40,7 +42,8 @@ public class ExcelGraphDefined implements ExcelGraph | |||
| this.valueList = valueList; | |||
| } | |||
| public Integer getGraphType() | |||
| @Override | |||
| public Integer getGraphType() | |||
| { | |||
| return graphType; | |||
| } | |||
| @@ -48,7 +51,8 @@ public class ExcelGraphDefined implements ExcelGraph | |||
| { | |||
| this.graphType = graphType; | |||
| } | |||
| public List<ExcelTitleCell> getTitleCell() | |||
| @Override | |||
| public List<ExcelTitleCell> getTitleCell() | |||
| { | |||
| return titleCell; | |||
| } | |||
| @@ -56,7 +60,8 @@ public class ExcelGraphDefined implements ExcelGraph | |||
| { | |||
| this.titleCell = titleCell; | |||
| } | |||
| public List<String> getTitle() | |||
| @Override | |||
| public List<String> getTitle() | |||
| { | |||
| return title; | |||
| } | |||
| @@ -18,7 +18,7 @@ public class ExcelGraphElement | |||
| private Integer endRowNum; | |||
| private Integer startColNum; | |||
| private Integer endColNum; | |||
| private Integer elementType=ExcelGraphElementType.StringType; | |||
| private Integer elementType=ExcelGraphElementType.STRING_TYPE; | |||
| public Integer getStartRowNum() | |||
| @@ -71,7 +71,7 @@ public class ExcelToHtmlServer { | |||
| this.sheetNum = params.getSheetNum(); | |||
| cssRandom = (int) Math.ceil(Math.random() * 1000); | |||
| this.imageCachePath = params.getPath(); | |||
| today = DATE_FORMAT.format(new Date()); | |||
| today = new SimpleDateFormat("yyyy_MM_dd").format(new Date()); | |||
| } | |||
| public String printPage() { | |||
| @@ -101,8 +101,9 @@ public class ExcelToHtmlServer { | |||
| } catch (Exception e) { | |||
| LOGGER.error(e.getMessage(), e); | |||
| } finally { | |||
| if (out != null) | |||
| if (out != null) { | |||
| out.close(); | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| @@ -125,8 +126,9 @@ public class ExcelToHtmlServer { | |||
| } | |||
| private void ensureOut() { | |||
| if (out == null) | |||
| if (out == null) { | |||
| out = new Formatter(new StringBuilder()); | |||
| } | |||
| } | |||
| private void printSheets() { | |||
| @@ -159,8 +161,9 @@ public class ExcelToHtmlServer { | |||
| } | |||
| private void ensureColumnBounds(Sheet sheet) { | |||
| if (gotBounds) | |||
| if (gotBounds) { | |||
| return; | |||
| } | |||
| Iterator<Row> iter = sheet.rowIterator(); | |||
| firstColumn = (iter.hasNext() ? Integer.MAX_VALUE : 0); | |||
| @@ -301,8 +304,9 @@ public class ExcelToHtmlServer { | |||
| } | |||
| private String styleName(CellStyle style) { | |||
| if (style == null) | |||
| if (style == null) { | |||
| return ""; | |||
| } | |||
| return String.format("style_%02x_%s font_%s_%s", style.getIndex(), cssRandom, | |||
| style.getFontIndex(), cssRandom); | |||
| } | |||
| @@ -28,6 +28,9 @@ public class CssParseServer { | |||
| private static final Logger log = LoggerFactory.getLogger(CssParseServer.class); | |||
| private static final Pattern STYLE_PATTERN = Pattern.compile("(?:^|\\s+)(italic|oblique)(?:\\s+|$)"); | |||
| private static final Pattern WEIGHT_PATTERN = Pattern.compile("(?:^|\\s+)(bold(?:er)?|[7-9]00)(?:\\s+|$)"); | |||
| @SuppressWarnings("serial") | |||
| private final static Set<String> BORDER_STYLES = new HashSet<String>() { | |||
| { | |||
| @@ -193,8 +196,7 @@ public class CssParseServer { | |||
| font.replaceAll("^|\\s*" + StringUtils.join(ignoreStyles, "|") + "\\s+|$", " ")); | |||
| log.debug("Font Attr [{}] After Process Ingore.", sbFont); | |||
| // style | |||
| Matcher m = Pattern.compile("(?:^|\\s+)(italic|oblique)(?:\\s+|$)") | |||
| .matcher(sbFont.toString()); | |||
| Matcher m = STYLE_PATTERN.matcher(sbFont.toString()); | |||
| if (m.find()) { | |||
| sbFont.setLength(0); | |||
| if (log.isDebugEnabled()) { | |||
| @@ -205,8 +207,7 @@ public class CssParseServer { | |||
| m.appendTail(sbFont); | |||
| } | |||
| // weight | |||
| m = Pattern.compile("(?:^|\\s+)(bold(?:er)?|[7-9]00)(?:\\s+|$)") | |||
| .matcher(sbFont.toString()); | |||
| m = WEIGHT_PATTERN.matcher(sbFont.toString()); | |||
| if (m.find()) { | |||
| sbFont.setLength(0); | |||
| if (log.isDebugEnabled()) { | |||
| @@ -31,14 +31,15 @@ public class CellValueHelper { | |||
| public CellValueHelper(Workbook wb, int cssRandom) { | |||
| this.cssRandom = cssRandom; | |||
| if (wb instanceof HSSFWorkbook) | |||
| if (wb instanceof HSSFWorkbook) { | |||
| is07 = false; | |||
| else if (wb instanceof XSSFWorkbook) { | |||
| }else if (wb instanceof XSSFWorkbook) { | |||
| is07 = true; | |||
| cacheFontInfo(wb); | |||
| } else | |||
| } else { | |||
| throw new IllegalArgumentException( | |||
| "unknown workbook type: " + wb.getClass().getSimpleName()); | |||
| "unknown workbook type: " + wb.getClass().getSimpleName()); | |||
| } | |||
| } | |||
| /** | |||
| @@ -69,13 +69,14 @@ public class StylerHelper { | |||
| this.out = out; | |||
| this.sheetNum = sheetNum; | |||
| this.cssRandom = cssRandom; | |||
| if (wb instanceof HSSFWorkbook) | |||
| if (wb instanceof HSSFWorkbook) { | |||
| helper = new HSSFHtmlHelper((HSSFWorkbook) wb); | |||
| else if (wb instanceof XSSFWorkbook) | |||
| } else if (wb instanceof XSSFWorkbook) { | |||
| helper = new XSSFHtmlHelper((XSSFWorkbook) wb); | |||
| else | |||
| } else { | |||
| throw new IllegalArgumentException( | |||
| "unknown workbook type: " + wb.getClass().getSimpleName()); | |||
| "unknown workbook type: " + wb.getClass().getSimpleName()); | |||
| } | |||
| printInlineStyle(wb); | |||
| } | |||
| @@ -157,10 +158,12 @@ public class StylerHelper { | |||
| } | |||
| private void fontStyle(Font font) { | |||
| if (font.getBoldweight() >= Font.BOLDWEIGHT_BOLD) | |||
| if (font.getBoldweight() >= Font.BOLDWEIGHT_BOLD) { | |||
| out.format(" font-weight: bold;%n"); | |||
| if (font.getItalic()) | |||
| } | |||
| if (font.getItalic()) { | |||
| out.format(" font-style: italic;%n"); | |||
| } | |||
| out.format(" font-family: %s;%n", font.getFontName()); | |||
| int fontheight = font.getFontHeightInPoints(); | |||
| @@ -181,8 +184,9 @@ public class StylerHelper { | |||
| } | |||
| private String styleName(CellStyle style) { | |||
| if (style == null) | |||
| if (style == null) { | |||
| return ""; | |||
| } | |||
| return String.format("style_%02x_%s", style.getIndex(), cssRandom); | |||
| } | |||
| @@ -209,13 +213,14 @@ public class StylerHelper { | |||
| private final HSSFWorkbook wb; | |||
| private final HSSFPalette colors; | |||
| private HSSFColor HSSF_AUTO = new HSSFColor.AUTOMATIC(); | |||
| private HSSFColor hssfAuto = new HSSFColor.AUTOMATIC(); | |||
| public HSSFHtmlHelper(HSSFWorkbook wb) { | |||
| this.wb = wb; | |||
| colors = wb.getCustomPalette(); | |||
| } | |||
| @Override | |||
| public void colorStyles(CellStyle style, Formatter out) { | |||
| HSSFCellStyle cs = (HSSFCellStyle) style; | |||
| out.format(" /* fill pattern = %d */%n", cs.getFillPattern()); | |||
| @@ -225,7 +230,7 @@ public class StylerHelper { | |||
| private void styleColor(Formatter out, String attr, short index) { | |||
| HSSFColor color = colors.getColor(index); | |||
| if (index == HSSF_AUTO.getIndex() || color == null) { | |||
| if (index == hssfAuto.getIndex() || color == null) { | |||
| out.format(" /* %s: index = %d */%n", attr, index); | |||
| } else { | |||
| short[] rgb = color.getTriplet(); | |||
| @@ -234,6 +239,7 @@ public class StylerHelper { | |||
| } | |||
| } | |||
| @Override | |||
| public void styleColor(Formatter out, String attr, Color color) { | |||
| if (color == null) { | |||
| return; | |||
| @@ -254,16 +260,19 @@ public class StylerHelper { | |||
| public XSSFHtmlHelper(XSSFWorkbook wb) { | |||
| } | |||
| @Override | |||
| public void colorStyles(CellStyle style, Formatter out) { | |||
| XSSFCellStyle cs = (XSSFCellStyle) style; | |||
| styleColor(out, "background-color", cs.getFillForegroundXSSFColor()); | |||
| styleColor(out, "color", cs.getFont().getXSSFColor()); | |||
| } | |||
| @Override | |||
| public void styleColor(Formatter out, String attr, Color color) { | |||
| XSSFColor xSSFColor = (XSSFColor) color; | |||
| if (color == null || xSSFColor.isAuto()) | |||
| if (color == null || xSSFColor.isAuto()) { | |||
| return; | |||
| } | |||
| byte[] rgb = xSSFColor.getRGB(); | |||
| if (rgb == null) { | |||
| @@ -142,7 +142,7 @@ public class ExcelImportServer extends ImportBaseService { | |||
| */ | |||
| private String getSaveUrl(ExcelImportEntity excelImportEntity, Object object) throws Exception { | |||
| String url = ""; | |||
| if (excelImportEntity.getSaveUrl().equals("upload")) { | |||
| if ("upload".equals(excelImportEntity.getSaveUrl())) { | |||
| if (excelImportEntity.getMethods() != null | |||
| && excelImportEntity.getMethods().size() > 0) { | |||
| object = getFieldBySomeMethod(excelImportEntity.getMethods(), object); | |||
| @@ -162,7 +162,7 @@ public class ExcelImportServer extends ImportBaseService { | |||
| List<ExcelCollectionParams> excelCollection = new ArrayList<ExcelCollectionParams>(); | |||
| String targetId = null; | |||
| if (!Map.class.equals(pojoClass)) { | |||
| Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||
| Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | |||
| ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | |||
| if (etarget != null) { | |||
| targetId = etarget.value(); | |||
| @@ -267,8 +267,9 @@ public class ExcelImportServer extends ImportBaseService { | |||
| if (params.getVerifyHanlder() != null) { | |||
| ExcelVerifyHanlderResult result = params.getVerifyHanlder().verifyHandler(object); | |||
| if (!result.isSuccess()) { | |||
| if (cell == null) | |||
| if (cell == null) { | |||
| cell = row.createCell(row.getLastCellNum()); | |||
| } | |||
| cell.setCellValue((StringUtils.isNoneBlank(cell.getStringCellValue()) | |||
| ? cell.getStringCellValue() + "," : "") + result.getMsg()); | |||
| if (object instanceof IExcelModel) { | |||
| @@ -372,7 +373,7 @@ public class ExcelImportServer extends ImportBaseService { | |||
| for (int i = params.getStartSheetIndex(); i < params.getStartSheetIndex() | |||
| + params.getSheetNum(); i++) { | |||
| if (LOGGER.isDebugEnabled()) { | |||
| LOGGER.debug(" start to read excel by is ,startTime is {}", new Date().getTime()); | |||
| LOGGER.debug(" start to read excel by is ,startTime is {}", System.currentTimeMillis()); | |||
| } | |||
| if (isXSSFWorkbook) { | |||
| pictures = PoiPublicUtil.getSheetPictrues07((XSSFSheet) book.getSheetAt(i), | |||
| @@ -382,16 +383,16 @@ public class ExcelImportServer extends ImportBaseService { | |||
| (HSSFWorkbook) book); | |||
| } | |||
| if (LOGGER.isDebugEnabled()) { | |||
| LOGGER.debug(" end to read excel by is ,endTime is {}", new Date().getTime()); | |||
| LOGGER.debug(" end to read excel by is ,endTime is {}", System.currentTimeMillis()); | |||
| } | |||
| result.addAll(importExcel(result, book.getSheetAt(i), pojoClass, params, pictures)); | |||
| if (LOGGER.isDebugEnabled()) { | |||
| LOGGER.debug(" end to read excel list by pos ,endTime is {}", new Date().getTime()); | |||
| LOGGER.debug(" end to read excel list by pos ,endTime is {}", System.currentTimeMillis()); | |||
| } | |||
| if (params.isReadSingleCell()) { | |||
| readSingleCell(importResult, book.getSheetAt(i), params); | |||
| if (LOGGER.isDebugEnabled()) { | |||
| LOGGER.debug(" read Key-Value ,endTime is {}", new Date().getTime()); | |||
| LOGGER.debug(" read Key-Value ,endTime is {}", System.currentTimeMillis()); | |||
| } | |||
| } | |||
| } | |||
| @@ -222,7 +222,7 @@ public class ImportBaseService { | |||
| */ | |||
| public String getSaveExcelUrl(ImportParams params, Class<?> pojoClass) throws Exception { | |||
| String url = ""; | |||
| if (params.getSaveUrl().equals("upload/excelUpload")) { | |||
| if ("upload/excelUpload".equals(params.getSaveUrl())) { | |||
| url = pojoClass.getName().split("\\.")[pojoClass.getName().split("\\.").length - 1]; | |||
| return params.getSaveUrl() + "/" + url; | |||
| } | |||
| @@ -108,7 +108,7 @@ public class SheetHandler extends DefaultHandler { | |||
| // 将单元格内容加入rowlist中,在这之前先去掉字符串前后的空白符 | |||
| } else if ("v".equals(name)) { | |||
| String value = lastContents.trim(); | |||
| value = value.equals("") ? " " : value; | |||
| value = "".equals(value) ? " " : value; | |||
| if (CellValueType.Date.equals(type)) { | |||
| Date date = HSSFDateUtil.getJavaDate(Double.valueOf(value)); | |||
| rowlist.add(curCol, new SaxReadCellEntity(CellValueType.Date, date)); | |||
| @@ -119,7 +119,7 @@ public class SheetHandler extends DefaultHandler { | |||
| rowlist.add(curCol, new SaxReadCellEntity(CellValueType.String, value)); | |||
| } | |||
| curCol++; | |||
| } else if (name.equals("row")) {//如果标签名称为 row ,这说明已到行尾,调用 optRows() 方法 | |||
| } else if ("row".equals(name)) {//如果标签名称为 row ,这说明已到行尾,调用 optRows() 方法 | |||
| read.parse(curRow, rowlist); | |||
| rowlist.clear(); | |||
| curRow++; | |||
| @@ -83,7 +83,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead { | |||
| private void initParams(Class<?> pojoClass, ImportParams params) { | |||
| try { | |||
| Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||
| Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | |||
| ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | |||
| if (etarget != null) { | |||
| targetId = etarget.value(); | |||
| @@ -87,7 +87,7 @@ public class PdfExportServer extends ExportCommonServer { | |||
| //excelParams.add(indexExcelEntity(entity)); | |||
| } | |||
| // 得到所有字段 | |||
| Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); | |||
| Field[] fileds = PoiPublicUtil.getClassFields(pojoClass); | |||
| ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); | |||
| String targetId = etarget == null ? null : etarget.value(); | |||
| getAllExcelField(entity.getExclusions(), targetId, fileds, excelParams, pojoClass, | |||
| @@ -100,8 +100,9 @@ public class PoiCellUtil { | |||
| * @return | |||
| */ | |||
| public static String getCellValue(Cell cell) { | |||
| if (cell == null) | |||
| if (cell == null) { | |||
| return ""; | |||
| } | |||
| if (cell.getCellType() == Cell.CELL_TYPE_STRING) { | |||
| @@ -27,6 +27,11 @@ public class PoiCssUtils { | |||
| private static final String COLOR_PATTERN_VALUE_LONG = "^(#(?:[a-f]|\\d{2}){3})$"; | |||
| // matches #rgb(r, g, b) | |||
| private static final String COLOR_PATTERN_RGB = "^(rgb\\s*\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\))$"; | |||
| private static final Pattern COLOR_PATTERN_VALUE_SHORT_PATTERN = Pattern.compile("([a-f]|\\d)"); | |||
| private static final Pattern INT_PATTERN = Pattern.compile("^(\\d+)(?:\\w+|%)?$"); | |||
| private static final Pattern INT_AND_PER_PATTERN = Pattern.compile("^(\\d*\\.?\\d+)\\s*(%)?$"); | |||
| // color name -> POI Color | |||
| private static Map<String, HSSFColor> colors = new HashMap<String, HSSFColor>(); | |||
| // static init | |||
| @@ -67,7 +72,7 @@ public class PoiCssUtils { | |||
| public static int getInt(String strValue) { | |||
| int value = 0; | |||
| if (StringUtils.isNotBlank(strValue)) { | |||
| Matcher m = Pattern.compile("^(\\d+)(?:\\w+|%)?$").matcher(strValue); | |||
| Matcher m = INT_PATTERN.matcher(strValue); | |||
| if (m.find()) { | |||
| value = Integer.parseInt(m.group(1)); | |||
| } | |||
| @@ -98,7 +103,7 @@ public class PoiCssUtils { | |||
| if (color.matches(COLOR_PATTERN_VALUE_SHORT)) { | |||
| log.debug("Short Hex Color [{}] Found.", color); | |||
| StringBuffer sbColor = new StringBuffer(); | |||
| Matcher m = Pattern.compile("([a-f]|\\d)").matcher(color); | |||
| Matcher m = COLOR_PATTERN_VALUE_SHORT_PATTERN.matcher(color); | |||
| while (m.find()) { | |||
| m.appendReplacement(sbColor, "$1$1"); | |||
| } | |||
| @@ -180,7 +185,7 @@ public class PoiCssUtils { | |||
| public static int calcColorValue(String color) { | |||
| int rtn = 0; | |||
| // matches 64 or 64% | |||
| Matcher m = Pattern.compile("^(\\d*\\.?\\d+)\\s*(%)?$").matcher(color); | |||
| Matcher m = INT_AND_PER_PATTERN.matcher(color); | |||
| if (m.matches()) { | |||
| // % not found | |||
| if (m.group(2) == null) { | |||
| @@ -103,11 +103,11 @@ public final class PoiFunctionUtil { | |||
| } | |||
| SimpleDateFormat dateFormat = null; | |||
| if (DAY_STR.equals(format)) { | |||
| dateFormat = DAY_FORMAT; | |||
| dateFormat = new SimpleDateFormat(DAY_STR); | |||
| } else if (TIME_STR.equals(format)) { | |||
| dateFormat = TIME_FORMAT; | |||
| dateFormat = new SimpleDateFormat(TIME_STR); | |||
| } else if (TIME__NO_S_STR.equals(format)) { | |||
| dateFormat = TIME__NO_S_FORMAT; | |||
| dateFormat = new SimpleDateFormat(TIME__NO_S_STR); | |||
| } else { | |||
| dateFormat = new SimpleDateFormat(format); | |||
| } | |||
| @@ -251,10 +251,10 @@ public final class PoiPublicUtil { | |||
| if (fieldType.isArray()) { | |||
| isBaseClass = false; | |||
| } else if (fieldType.isPrimitive() || fieldType.getPackage() == null | |||
| || fieldType.getPackage().getName().equals("java.lang") | |||
| || fieldType.getPackage().getName().equals("java.math") | |||
| || fieldType.getPackage().getName().equals("java.sql") | |||
| || fieldType.getPackage().getName().equals("java.util")) { | |||
| || "java.lang".equals(fieldType.getPackage().getName()) | |||
| || "java.math".equals(fieldType.getPackage().getName()) | |||
| || "java.sql".equals(fieldType.getPackage().getName()) | |||
| || "java.util".equals(fieldType.getPackage().getName())) { | |||
| isBaseClass = true; | |||
| } | |||
| return isBaseClass; | |||
| @@ -300,21 +300,21 @@ public final class PoiPublicUtil { | |||
| * @return | |||
| */ | |||
| private static boolean isUseInThis(String exportName, String targetId) { | |||
| return targetId == null || exportName.equals("") || exportName.indexOf("_") < 0 | |||
| return targetId == null || "".equals(exportName) || exportName.indexOf("_") < 0 | |||
| || exportName.indexOf(targetId) != -1; | |||
| } | |||
| private static Integer getImageType(String type) { | |||
| if (type.equalsIgnoreCase("JPG") || type.equalsIgnoreCase("JPEG")) { | |||
| if ("JPG".equalsIgnoreCase(type) || "JPEG".equalsIgnoreCase(type)) { | |||
| return XWPFDocument.PICTURE_TYPE_JPEG; | |||
| } | |||
| if (type.equalsIgnoreCase("GIF")) { | |||
| if ("GIF".equalsIgnoreCase(type)) { | |||
| return XWPFDocument.PICTURE_TYPE_GIF; | |||
| } | |||
| if (type.equalsIgnoreCase("BMP")) { | |||
| if ("BMP".equalsIgnoreCase(type)) { | |||
| return XWPFDocument.PICTURE_TYPE_GIF; | |||
| } | |||
| if (type.equalsIgnoreCase("PNG")) { | |||
| if ("PNG".equalsIgnoreCase(type)) { | |||
| return XWPFDocument.PICTURE_TYPE_PNG; | |||
| } | |||
| return XWPFDocument.PICTURE_TYPE_JPEG; | |||
| @@ -196,7 +196,7 @@ public final class PoiReflectorUtil { | |||
| // Ignored. This is only a final precaution, nothing we can do. | |||
| } | |||
| } | |||
| if (field.isAccessible() && !field.getName().equalsIgnoreCase("serialVersionUID")) { | |||
| if (field.isAccessible() && !"serialVersionUID".equalsIgnoreCase(field.getName())) { | |||
| this.fieldList.add(field); | |||
| } | |||
| } | |||
| @@ -40,21 +40,25 @@ public class PoiSheetUtility extends Object { | |||
| Row row = sheet.getRow(r); | |||
| // if no row exists here; then nothing to do; next! | |||
| if (row == null) | |||
| if (row == null) { | |||
| continue; | |||
| } | |||
| // if the row doesn't have this many columns then we are good; next! | |||
| int lastColumn = row.getLastCellNum(); | |||
| if (lastColumn > maxColumn) | |||
| if (lastColumn > maxColumn) { | |||
| maxColumn = lastColumn; | |||
| } | |||
| if (lastColumn < columnToDelete) | |||
| if (lastColumn < columnToDelete) { | |||
| continue; | |||
| } | |||
| for (int x = columnToDelete + 1; x < lastColumn + 1; x++) { | |||
| Cell oldCell = row.getCell(x - 1); | |||
| if (oldCell != null) | |||
| if (oldCell != null) { | |||
| row.removeCell(oldCell); | |||
| } | |||
| Cell nextCell = row.getCell(x); | |||
| if (nextCell != null) { | |||
| @@ -99,6 +103,8 @@ public class PoiSheetUtility extends Object { | |||
| cNew.setCellFormula(cOld.getCellFormula()); | |||
| break; | |||
| } | |||
| default: | |||
| cNew.setCellValue(cOld.getStringCellValue()); | |||
| } | |||
| } | |||
| @@ -29,19 +29,19 @@ import javax.validation.ValidatorFactory; | |||
| */ | |||
| public class PoiValidationUtil { | |||
| private final static Validator validator; | |||
| private final static Validator VALIDATOR; | |||
| static { | |||
| ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); | |||
| validator = factory.getValidator(); | |||
| VALIDATOR = factory.getValidator(); | |||
| } | |||
| public static String validation(Object obj, Class[] verfiyGroup) { | |||
| Set<ConstraintViolation<Object>> set = null; | |||
| if(verfiyGroup != null){ | |||
| set = validator.validate(obj,verfiyGroup); | |||
| set = VALIDATOR.validate(obj,verfiyGroup); | |||
| }else{ | |||
| set = validator.validate(obj); | |||
| set = VALIDATOR.validate(obj); | |||
| } | |||
| if (set!= null && set.size() > 0) { | |||
| return getValidateErrMsg(set); | |||
| @@ -73,9 +73,9 @@ public class MyXWPFDocument extends XWPFDocument { | |||
| } | |||
| public void createPicture(String blipId, int id, int width, int height) { | |||
| final int EMU = 9525; | |||
| width *= EMU; | |||
| height *= EMU; | |||
| final int emu = 9525; | |||
| width *= emu; | |||
| height *= emu; | |||
| CTInline inline = createParagraph().createRun().getCTR().addNewDrawing().addNewInline(); | |||
| String picXml = String.format(PICXML, id, blipId, width, height); | |||
| XmlToken xmlToken = null; | |||
| @@ -102,9 +102,9 @@ public class MyXWPFDocument extends XWPFDocument { | |||
| } | |||
| public void createPicture(XWPFRun run, String blipId, int id, int width, int height) { | |||
| final int EMU = 9525; | |||
| width *= EMU; | |||
| height *= EMU; | |||
| final int emu = 9525; | |||
| width *= emu; | |||
| height *= emu; | |||
| CTInline inline = run.getCTR().addNewDrawing().addNewInline(); | |||
| String picXml = String.format(PICXML, id, blipId, width, height); | |||
| XmlToken xmlToken = null; | |||
| @@ -171,7 +171,7 @@ public class ExcelEntityParse extends ExportCommonServer { | |||
| Map<String, Integer> titlemap = getTitleMap(table, index, entity.getHeadRows()); | |||
| try { | |||
| // 得到所有字段 | |||
| Field fileds[] = PoiPublicUtil.getClassFields(entity.getClazz()); | |||
| Field[] fileds = PoiPublicUtil.getClassFields(entity.getClazz()); | |||
| ExcelTarget etarget = entity.getClazz().getAnnotation(ExcelTarget.class); | |||
| String targetId = null; | |||
| if (etarget != null) { | |||