认证-上报库-自定义导出excel模板-图片处理
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013 Haulmont
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
* the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations under
|
||||||
|
* the License.
|
||||||
|
*/
|
||||||
|
package com.jero.modules.project.util;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
|
import org.xlsx4j.sml.Cell;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class CellReference implements Comparable {
|
||||||
|
public static final Pattern CELL_COORDINATES_PATTERN = Pattern.compile("([A-z]+)([0-9]+)");
|
||||||
|
private int column;
|
||||||
|
private int row;
|
||||||
|
private String sheet;
|
||||||
|
|
||||||
|
public CellReference(String sheet, int row, int column) {
|
||||||
|
this.column = column;
|
||||||
|
this.row = row;
|
||||||
|
this.sheet = sheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference(String sheet, String cellRef) {
|
||||||
|
Matcher matcher = CELL_COORDINATES_PATTERN.matcher(cellRef);
|
||||||
|
if (matcher.find()) {
|
||||||
|
column = XlsxUtils.getNumberFromColumnReference(matcher.group(1));
|
||||||
|
row = Integer.valueOf(matcher.group(2));
|
||||||
|
this.sheet = sheet;
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException(String.format("Wrong cell %s", cellRef));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference(String sheet, Cell cell) {
|
||||||
|
this(sheet, cell.getR());
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference shift(int downShift, int rightShift) {
|
||||||
|
row += downShift;
|
||||||
|
column += rightShift;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference move(int row, int col) {
|
||||||
|
this.row = row;
|
||||||
|
this.column = col;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toReference() {
|
||||||
|
return XlsxUtils.getColumnReferenceFromNumber(getColumn()) + getRow();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColumn() {
|
||||||
|
return column;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRow() {
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSheet() {
|
||||||
|
return sheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
|
||||||
|
CellReference that = (CellReference) o;
|
||||||
|
|
||||||
|
if (column != that.column) return false;
|
||||||
|
if (row != that.row) return false;
|
||||||
|
if (sheet != null ? !sheet.equals(that.sheet) : that.sheet != null) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = column;
|
||||||
|
result = 31 * result + row;
|
||||||
|
result = 31 * result + (sheet != null ? sheet.hashCode() : 0);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Object o) {
|
||||||
|
if (o instanceof CellReference) {
|
||||||
|
int rows = ObjectUtils.compare(row, ((CellReference) o).row);
|
||||||
|
int columns = ObjectUtils.compare(column, ((CellReference) o).column);
|
||||||
|
return rows != 0 ? rows : columns;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Could not compare with " + o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013 Haulmont
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
* the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations under
|
||||||
|
* the License.
|
||||||
|
*/
|
||||||
|
package com.jero.modules.project.util;
|
||||||
|
|
||||||
|
public final class XlsxUtils {
|
||||||
|
|
||||||
|
private static final long PX_PER_INCH = 96;
|
||||||
|
private static final long EMU_PER_INCH = 914400;
|
||||||
|
|
||||||
|
private XlsxUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getNumberFromColumnReference(String columnReference) {
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < columnReference.length(); i++) {
|
||||||
|
char c = columnReference.charAt(i);
|
||||||
|
int number = ((int) c) - 64 - 1;
|
||||||
|
|
||||||
|
int pow = columnReference.length() - i - 1;
|
||||||
|
sum += Math.pow(26, pow) * (number + 1);
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getColumnReferenceFromNumber(int number) {
|
||||||
|
int remain = 0;
|
||||||
|
StringBuilder ref = new StringBuilder();
|
||||||
|
do {
|
||||||
|
|
||||||
|
remain = (number - 1) % 26;
|
||||||
|
number = (number - 1) / 26;
|
||||||
|
|
||||||
|
ref.append((char) (remain + 64 + 1));
|
||||||
|
} while (number > 0);
|
||||||
|
|
||||||
|
return ref.reverse().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long convertPxToEmu(long px) {
|
||||||
|
return px * EMU_PER_INCH / PX_PER_INCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user