瀏覽代碼

4.1版本说明

4.1.3.A
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.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(),
sheet.getLastRowNum(), shiftRows, true, true); 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); templateSumHandler.shiftRows(teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), shiftRows);
PoiExcelTempUtil.reset(sheet, teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), sheet.getLastRowNum()); PoiExcelTempUtil.reset(sheet, teplateParams.getHeadingRows() + teplateParams.getHeadingStartRow(), sheet.getLastRowNum());
if (excelParams.size() == 0) { 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()) { if (isShift && datas.size() * rowspan > 1 && cell.getRowIndex() + rowspan < cell.getRow().getSheet().getLastRowNum()) {
int lastRowNum = 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); 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); templateSumHandler.shiftRows(cell.getRowIndex() + rowspan, (datas.size() - 1) * rowspan);
PoiExcelTempUtil.reset(cell.getSheet(), cell.getRowIndex() + rowspan + (datas.size() - 1) * rowspan, cell.getRow().getSheet().getLastRowNum()); 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; ExcelForEachParams params;
row = row.getSheet().getRow(row.getRowNum() - rowspan + 1); row = row.getSheet().getRow(row.getRowNum() - rowspan + 1);
for (int k = 0; k < rowspan; k++) { for (int k = 0; k < rowspan; k++) {
int ci = columnIndex;
int ci = columnIndex;
short high = columns.get(0).getHeight(); short high = columns.get(0).getHeight();
int n = k; int n = k;
while (n > 0) { while (n > 0) {
@@ -690,7 +692,7 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
LOGGER.error(e.getMessage(), e); LOGGER.error(e.getMessage(), e);
} }
} }
if(params.getCellStyle() != null){
if (params.getCellStyle() != null) {
row.getCell(ci).setCellStyle(params.getCellStyle()); 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) { private void getAllMergedRegion(Sheet sheet) {
int nums = sheet.getNumMergedRegions(); int nums = sheet.getNumMergedRegions();
for (int i = 0; i < nums; i++) { 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 * @param formatAsString
*/ */
private void handlerMergedString(CellRangeAddress cellRangeAddress, String formatAsString) {
private void handlerMergedString(CellRangeAddress cellRangeAddress, String formatAsString, int index) {
String[] strArr = formatAsString.split(":"); String[] strArr = formatAsString.split(":");
if (strArr.length == 2) { if (strArr.length == 2) {
int startCol = strArr[0].charAt(0) - 65; int startCol = strArr[0].charAt(0) - 65;
@@ -102,9 +102,16 @@ public class MergedRegionHelper {
* @param rowIndex * @param rowIndex
* @param size * @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>(); Set<String> keys = new HashSet<String>();
keys.addAll(mergedCache.keySet()); 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) { for (String key : keys) {
String[] temp = key.split("_"); String[] temp = key.split("_");
if (Integer.parseInt(temp[0]) >= rowIndex) { 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; package cn.afterturn.easypoi.util;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collection; import java.util.Collection;
@@ -151,9 +152,9 @@ public final class PoiFunctionUtil {
//要求两个对象当中至少一个对象不是字符串才进行数字类型判断 //要求两个对象当中至少一个对象不是字符串才进行数字类型判断
if (!(first instanceof String) || !(second instanceof String)) { if (!(first instanceof String) || !(second instanceof String)) {
try { 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) { } 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, private void changeValues(XWPFParagraph paragraph, XWPFRun currentRun, String currentText,
List<Integer> runIndex, Map<String, Object> map) throws Exception { List<Integer> runIndex, Map<String, Object> map) throws Exception {
Object obj = PoiPublicUtil.getRealValue(currentText, map); Object obj = PoiPublicUtil.getRealValue(currentText, map);
if (obj instanceof ImageEntity) {// 如果是图片就设置为图片
// 如果是图片就设置为图片
if (obj instanceof ImageEntity) {
currentRun.setText("", 0); currentRun.setText("", 0);
ExcelMapParse.addAnImage((ImageEntity) obj, currentRun); ExcelMapParse.addAnImage((ImageEntity) obj, currentRun);
} else { } else {


Loading…
取消
儲存