|
@@ -29,6 +29,7 @@ import lombok.Data;
|
|
import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
|
|
import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
|
|
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
import org.apache.poi.ss.util.CellRangeAddress;
|
|
import org.apache.poi.util.IOUtils;
|
|
import org.apache.poi.util.IOUtils;
|
|
@@ -3295,7 +3296,16 @@ public class TaskController extends BladeController {
|
|
/*准备*/
|
|
/*准备*/
|
|
reportResults.forEach(rs -> {
|
|
reportResults.forEach(rs -> {
|
|
if(rs.getInitTableName().equals("m_20240325154016_1772166597482381312")){
|
|
if(rs.getInitTableName().equals("m_20240325154016_1772166597482381312")){
|
|
- rs.setDeleteRow("13,15");
|
|
|
|
|
|
+ List<Map.Entry<String,Object>> entries=rs.getData().get(0).entrySet().stream().filter(e->Integer.parseInt(e.getKey().split("_")[1])==1).sorted(Comparator.comparingInt(e->Integer.parseInt(e.getKey().split("_")[0]))).collect(Collectors.toList());
|
|
|
|
+ List<String> list =entries.stream().map(e->e.getValue().toString()).collect(Collectors.toList());
|
|
|
|
+ int index= list.indexOf("小计");
|
|
|
|
+ if(index>0) {
|
|
|
|
+ Map.Entry<String,Object> head=entries.get(index-1);
|
|
|
|
+ Map.Entry<String,Object> tail=entries.get(index);
|
|
|
|
+ String start=(Integer.parseInt(head.getKey().split("_")[0])+1-1)+"";
|
|
|
|
+ String end=(Integer.parseInt(tail.getKey().split("_")[0])-1-1)+"";
|
|
|
|
+ rs.setDeleteRow(start+","+end);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
/*初始化路径*/
|
|
/*初始化路径*/
|
|
rs.pathInit(file_path,report.getContractId());
|
|
rs.pathInit(file_path,report.getContractId());
|
|
@@ -3390,7 +3400,7 @@ public class TaskController extends BladeController {
|
|
if(deleteRow!=null&&!deleteRow.isEmpty()){
|
|
if(deleteRow!=null&&!deleteRow.isEmpty()){
|
|
LinkedList<Integer> rowIds= Arrays.stream(deleteRow.split("\\D+")).map(Integer::parseInt).collect(Collectors.toCollection(LinkedList::new));
|
|
LinkedList<Integer> rowIds= Arrays.stream(deleteRow.split("\\D+")).map(Integer::parseInt).collect(Collectors.toCollection(LinkedList::new));
|
|
if(rowIds.size()>=2) {
|
|
if(rowIds.size()>=2) {
|
|
- // deleteRows2(sheet, rowIds.getFirst(), rowIds.getLast());
|
|
|
|
|
|
+ deleteRows2(sheet, rowIds.getFirst(), rowIds.getLast());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//去掉表格虚线
|
|
//去掉表格虚线
|
|
@@ -3492,18 +3502,39 @@ public class TaskController extends BladeController {
|
|
}
|
|
}
|
|
public void deleteRows2(Sheet sheet, int startRow, int endRow) {
|
|
public void deleteRows2(Sheet sheet, int startRow, int endRow) {
|
|
int lastRowNum = sheet.getLastRowNum();
|
|
int lastRowNum = sheet.getLastRowNum();
|
|
- deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));
|
|
|
|
- for (int i = endRow; i >= startRow; i--) {
|
|
|
|
- deleteMergedRegions(sheet,i);
|
|
|
|
- Row row = sheet.getRow(i);
|
|
|
|
- if (row != null) {
|
|
|
|
- sheet.removeRow(row);
|
|
|
|
|
|
+ /* deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
|
|
|
|
+ CellStyle cellStyle= sheet.getWorkbook().createCellStyle();
|
|
|
|
+ cellStyle.setBorderBottom(BorderStyle.NONE);
|
|
|
|
+ cellStyle.setBorderTop(BorderStyle.NONE);
|
|
|
|
+ cellStyle.setBorderLeft(BorderStyle.NONE);
|
|
|
|
+ cellStyle.setBorderRight(BorderStyle.NONE);
|
|
|
|
+ for(int i=startRow;i<=endRow;i++){
|
|
|
|
+ for(Cell cell:sheet.getRow(i)){
|
|
|
|
+ cell.setCellStyle(cellStyle);
|
|
}
|
|
}
|
|
|
|
+ sheet.getRow(i).setZeroHeight(true);
|
|
}
|
|
}
|
|
/*deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
|
|
/*deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
|
|
- sheet.shiftRows(endRow + 1, lastRowNum, -3);
|
|
|
|
- System.out.println();
|
|
|
|
|
|
+ //sheet.shiftRows(endRow + 1, lastRowNum, -3);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public static void mainT(String[] args) throws IOException, InvalidFormatException {
|
|
|
|
+ byte[] excelByte = CommonUtil.InputStreamToBytes(new FileInputStream("C:\\upload\\pdf\\a.xlsx"));
|
|
|
|
+ Workbook workbook = WorkbookFactory.create(new ByteArrayInputStream(excelByte));
|
|
|
|
+ //获取工作表
|
|
|
|
+ Sheet sheet = workbook.getSheetAt(0);
|
|
|
|
+ int lastRowNum = sheet.getLastRowNum();
|
|
|
|
+ int startRow=13,endRow=15;
|
|
|
|
+ /*deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
|
|
|
|
+ sheet.getMergedRegions();
|
|
|
|
+ for(int i=startRow;i<=endRow;i++){
|
|
|
|
+ sheet.getRow(i).setZeroHeight(true);
|
|
|
|
+ }
|
|
|
|
+ /*sheet.shiftRows(endRow+1, endRow+1, -1);*/
|
|
|
|
+
|
|
|
|
+ workbook.write(new FileOutputStream("C:\\upload\\pdf\\a2.xlsx"));
|
|
|
|
+ }
|
|
|
|
+
|
|
public static void deleteMergedRegions(Sheet sheet, List<CellRangeAddress> regionsToDelete) {
|
|
public static void deleteMergedRegions(Sheet sheet, List<CellRangeAddress> regionsToDelete) {
|
|
for (CellRangeAddress region : regionsToDelete) {
|
|
for (CellRangeAddress region : regionsToDelete) {
|
|
// 获取合并区域的数量
|
|
// 获取合并区域的数量
|