解决日均水位年报导出问题

master
wany 2024-09-05 10:01:35 +08:00
parent 097d13e723
commit 96ee468856
1 changed files with 46 additions and 43 deletions

View File

@ -6,7 +6,6 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.merge.LoopMergeStrategy;
import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy; import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.gunshi.project.xyt.util.excel.ExcelFillCellMergeStrategy; import com.gunshi.project.xyt.util.excel.ExcelFillCellMergeStrategy;
@ -28,15 +27,15 @@ public class ExcelUtil {
/** /**
* excel * excel
* *
* @param list , * @param list ,
* @param filename * @param filename
* @param clazz * @param clazz
* @param response * @param response
*/ */
public static <T> void exportExcel(List<T> list, String filename, Class<T> clazz, HttpServletResponse response,String sheetName) { public static <T> void exportExcel(List<T> list, String filename, Class<T> clazz, HttpServletResponse response, String sheetName) {
OutputStream out = null; OutputStream out = null;
try { try {
out = getOutputStream(filename,response); out = getOutputStream(filename, response);
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
//是否自动关闭流 //是否自动关闭流
.autoCloseStream(Boolean.FALSE) .autoCloseStream(Boolean.FALSE)
@ -46,7 +45,7 @@ public class ExcelUtil {
builder.doWrite(list); builder.doWrite(list);
} finally { } finally {
try { try {
if (out != null){ if (out != null) {
out.flush(); out.flush();
out.close(); out.close();
} }
@ -59,20 +58,20 @@ public class ExcelUtil {
/** /**
* excel, * excel,
* *
* @param list , * @param list ,
* @param filename * @param filename
* @param clazz * @param clazz
* @param response * @param response
*/ */
public static <T> void exportExcel(List<T> list, String filename, Class<T> clazz, HttpServletResponse response,String sheetName,Integer type) { public static <T> void exportExcel(List<T> list, String filename, Class<T> clazz, HttpServletResponse response, String sheetName, Integer type) {
OutputStream out = null; OutputStream out = null;
try { try {
out = getOutputStream(filename,response); out = getOutputStream(filename, response);
if(type == 1){ if (type == 1) {
OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36,36,1,2); OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36, 36, 1, 2);
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36,36,3,6); OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36, 36, 3, 6);
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36,36,7,8); OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36, 36, 7, 8);
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36,36,9,12); OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36, 36, 9, 12);
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
//是否自动关闭流 //是否自动关闭流
.autoCloseStream(Boolean.FALSE) .autoCloseStream(Boolean.FALSE)
@ -84,29 +83,31 @@ public class ExcelUtil {
.registerWriteHandler(strategy3) .registerWriteHandler(strategy3)
.sheet(sheetName); .sheet(sheetName);
builder.doWrite(list); builder.doWrite(list);
}else{ } else {
LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(1,2,0); OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33, 37, 0, 0);
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33,37,0,0); OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38, 38, 0, 1);
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38,38,0,1); OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38, 38, 3, 5);
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38,38,3,5); OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38, 38, 7, 9);
OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38,38,7,9); OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38, 38, 11, 13);
OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38,38,11,13);
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz) ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
//是否自动关闭流 //是否自动关闭流
.autoCloseStream(Boolean.FALSE) .autoCloseStream(Boolean.FALSE)
.registerWriteHandler(new VoteTitleHandler(filename)) .registerWriteHandler(new VoteTitleHandler(filename))
.registerWriteHandler(loopMergeStrategy)
.registerWriteHandler(strategy1) .registerWriteHandler(strategy1)
.registerWriteHandler(strategy2) .registerWriteHandler(strategy2)
.registerWriteHandler(strategy3) .registerWriteHandler(strategy3)
.registerWriteHandler(strategy4) .registerWriteHandler(strategy4)
.registerWriteHandler(strategy5) .registerWriteHandler(strategy5)
.sheet(sheetName); .sheet(sheetName);
for (int i = 2; i < 33; i++) {
OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(i, i, 0, 1);
builder.registerWriteHandler(strategy);
}
builder.doWrite(list); builder.doWrite(list);
} }
} finally { } finally {
try { try {
if (out != null){ if (out != null) {
out.flush(); out.flush();
out.close(); out.close();
} }
@ -118,17 +119,18 @@ public class ExcelUtil {
/** /**
* *
* @param head *
* @param data * @param head
* @param data
* @param filename * @param filename
* @param response * @param response
* @param sheetName * @param sheetName
* @param <T> * @param <T>
*/ */
public static <T> void exportExcel(List<List<String>> head,List<T> data, String filename, HttpServletResponse response,String sheetName) { public static <T> void exportExcel(List<List<String>> head, List<T> data, String filename, HttpServletResponse response, String sheetName) {
OutputStream out = null; OutputStream out = null;
try { try {
out = getOutputStream(filename,response); out = getOutputStream(filename, response);
ExcelWriterSheetBuilder builder = EasyExcel.write(out) ExcelWriterSheetBuilder builder = EasyExcel.write(out)
//是否自动关闭流 //是否自动关闭流
.autoCloseStream(Boolean.FALSE) .autoCloseStream(Boolean.FALSE)
@ -139,7 +141,7 @@ public class ExcelUtil {
builder.doWrite(data); builder.doWrite(data);
} finally { } finally {
try { try {
if (out != null){ if (out != null) {
out.flush(); out.flush();
out.close(); out.close();
} }
@ -150,30 +152,31 @@ public class ExcelUtil {
} }
/** /**
* *
* @param head *
* @param data * @param head
* @param mergeRowIndex * @param data
* @param mergeRowIndex
* @param mergeColumnIndex new int[]{0,1,2,3,4} * @param mergeColumnIndex new int[]{0,1,2,3,4}
* @param filename * @param filename
* @param response * @param response
* @param sheetName * @param sheetName
* @param <T> * @param <T>
*/ */
public static <T> void exportExcel(List<List<String>> head,List<T> data,int mergeRowIndex,int[] mergeColumnIndex, String filename, HttpServletResponse response,String sheetName) { public static <T> void exportExcel(List<List<String>> head, List<T> data, int mergeRowIndex, int[] mergeColumnIndex, String filename, HttpServletResponse response, String sheetName) {
OutputStream out = null; OutputStream out = null;
try { try {
out = getOutputStream(filename,response); out = getOutputStream(filename, response);
ExcelWriterSheetBuilder builder = EasyExcel.write(out) ExcelWriterSheetBuilder builder = EasyExcel.write(out)
//是否自动关闭流 //是否自动关闭流
.autoCloseStream(Boolean.FALSE) .autoCloseStream(Boolean.FALSE)
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex,mergeColumnIndex)) .registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex))
.head(head) .head(head)
.sheet(sheetName); .sheet(sheetName);
builder.doWrite(data); builder.doWrite(data);
} finally { } finally {
try { try {
if (out != null){ if (out != null) {
out.flush(); out.flush();
out.close(); out.close();
} }
@ -196,9 +199,9 @@ public class ExcelUtil {
public static <T> void exportTemplate(Map<String, Object> data, List<T> list, String filename, String templatePath, HttpServletResponse response) { public static <T> void exportTemplate(Map<String, Object> data, List<T> list, String filename, String templatePath, HttpServletResponse response) {
OutputStream out = null; OutputStream out = null;
try { try {
out = getOutputStream(filename,response); out = getOutputStream(filename, response);
ClassPathResource templateResource = new ClassPathResource(templatePath); ClassPathResource templateResource = new ClassPathResource(templatePath);
ExcelWriter excelWriter = EasyExcel.write(out) ExcelWriter excelWriter = EasyExcel.write(out)
.withTemplate(templateResource.getStream()) .withTemplate(templateResource.getStream())
.excelType(ExcelTypeEnum.XLSX) .excelType(ExcelTypeEnum.XLSX)
.build(); .build();
@ -206,12 +209,12 @@ public class ExcelUtil {
if (CollUtil.isEmpty(data)) { if (CollUtil.isEmpty(data)) {
throw new IllegalArgumentException("数据为空"); throw new IllegalArgumentException("数据为空");
} }
excelWriter.fill(list,writeSheet); excelWriter.fill(list, writeSheet);
excelWriter.fill(data, writeSheet); excelWriter.fill(data, writeSheet);
excelWriter.finish(); excelWriter.finish();
} finally { } finally {
try { try {
if (out != null){ if (out != null) {
out.flush(); out.flush();
out.close(); out.close();
} }