jueyue 5 роки тому
джерело
коміт
02a1ec7612
4 змінених файлів з 22 додано та 11 видалено
  1. +6
    -4
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java
  2. +10
    -3
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/html/helper/MergedRegionHelper.java
  3. +4
    -3
      easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiFunctionUtil.java
  4. +2
    -1
      easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java

+ 6
- 4
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java Переглянути файл

@@ -102,7 +102,8 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
//下移数据,模拟插入
sheet.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(),
sheet.getLastRowNum(), shiftRows, true, true);
mergedRegionHelper.shiftRows(sheet, teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), shiftRows);
mergedRegionHelper.shiftRows(sheet, teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), shiftRows,
sheet.getLastRowNum() - teplateParams.getHeadingRows() - teplateParams.getHeadingStartRow());
templateSumHandler.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), shiftRows);
PoiExcelTempUtil.reset(sheet, teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), sheet.getLastRowNum());
if (excelParams.size() == 0) {
@@ -154,8 +155,9 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
//修复不论后面有没有数据,都应该执行的是插入操作
if (isShift && datas.size() * rowspan > 1 && cell.getRowIndex() + rowspan < cell.getRow().getSheet().getLastRowNum()) {
int lastRowNum = cell.getRow().getSheet().getLastRowNum();
int shiftRows = lastRowNum - cell.getRowIndex() - rowspan;
cell.getRow().getSheet().shiftRows(cell.getRowIndex() + rowspan, lastRowNum, (datas.size() - 1) * rowspan, true, true);
mergedRegionHelper.shiftRows(cell.getSheet(), cell.getRowIndex() + rowspan, (datas.size() - 1) * rowspan);
mergedRegionHelper.shiftRows(cell.getSheet(), cell.getRowIndex() + rowspan, (datas.size() - 1) * rowspan, shiftRows);
templateSumHandler.shiftRows(cell.getRowIndex() + rowspan, (datas.size() - 1) * rowspan);
PoiExcelTempUtil.reset(cell.getSheet(), cell.getRowIndex() + rowspan + (datas.size() - 1) * rowspan, cell.getRow().getSheet().getLastRowNum());
}
@@ -632,7 +634,7 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
ExcelForEachParams params;
row = row.getSheet().getRow(row.getRowNum() - rowspan + 1);
for (int k = 0; k < rowspan; k++) {
int ci = columnIndex;
int ci = columnIndex;
short high = columns.get(0).getHeight();
int n = k;
while (n > 0) {
@@ -690,7 +692,7 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
LOGGER.error(e.getMessage(), e);
}
}
if(params.getCellStyle() != null){
if (params.getCellStyle() != null) {
row.getCell(ci).setCellStyle(params.getCellStyle());
}
//判断这个属性是不是需要统计


+ 10
- 3
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/html/helper/MergedRegionHelper.java Переглянути файл

@@ -29,7 +29,7 @@ public class MergedRegionHelper {
private void getAllMergedRegion(Sheet sheet) {
int nums = sheet.getNumMergedRegions();
for (int i = 0; i < nums; i++) {
handlerMergedString(sheet.getMergedRegion(i), sheet.getMergedRegion(i).formatAsString());
handlerMergedString(sheet.getMergedRegion(i), sheet.getMergedRegion(i).formatAsString(), i);
}
}
@@ -38,7 +38,7 @@ public class MergedRegionHelper {
*
* @param formatAsString
*/
private void handlerMergedString(CellRangeAddress cellRangeAddress, String formatAsString) {
private void handlerMergedString(CellRangeAddress cellRangeAddress, String formatAsString, int index) {
String[] strArr = formatAsString.split(":");
if (strArr.length == 2) {
int startCol = strArr[0].charAt(0) - 65;
@@ -102,9 +102,16 @@ public class MergedRegionHelper {
* @param rowIndex
* @param size
*/
public void shiftRows(Sheet sheet, int rowIndex, int size) {
public void shiftRows(Sheet sheet, int rowIndex, int size, int shiftRows) {
Set<String> keys = new HashSet<String>();
keys.addAll(mergedCache.keySet());
//删除掉原始的缓存KEY
for (String key : keys) {
String[] temp = key.split("_");
if (Integer.parseInt(temp[0]) >= rowIndex + size && Integer.parseInt(temp[0]) <= rowIndex + size + shiftRows) {
mergedCache.remove(key);
}
}
for (String key : keys) {
String[] temp = key.split("_");
if (Integer.parseInt(temp[0]) >= rowIndex) {


+ 4
- 3
easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiFunctionUtil.java Переглянути файл

@@ -16,6 +16,7 @@
package cn.afterturn.easypoi.util;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
@@ -151,9 +152,9 @@ public final class PoiFunctionUtil {
//要求两个对象当中至少一个对象不是字符串才进行数字类型判断
if (!(first instanceof String) || !(second instanceof String)) {
try {
double f = Double.parseDouble(first.toString());
double s = Double.parseDouble(second.toString());
return f == s;
BigDecimal f = new BigDecimal(first.toString());
BigDecimal s = new BigDecimal(second.toString());
return f.compareTo(s) == 0;
} catch (NumberFormatException e) {
//可能存在的错误,忽略继续进行
}


+ 2
- 1
easypoi-base/src/main/java/cn/afterturn/easypoi/word/parse/ParseWord07.java Переглянути файл

@@ -56,7 +56,8 @@ public class ParseWord07 {
private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText,
List<Integer> runIndex, Map<String, Object> map) throws Exception {
Object obj = PoiPublicUtil.getRealValue(currentText, map);
if (obj instanceof ImageEntity) {// 如果是图片就设置为图片
// 如果是图片就设置为图片
if (obj instanceof ImageEntity) {
currentRun.setText("", 0);
ExcelMapParse.addAnImage((ImageEntity) obj, currentRun);
} else {


Завантаження…
Відмінити
Зберегти