解决日均水位年报导出问题
parent
097d13e723
commit
96ee468856
|
|
@ -6,7 +6,6 @@ import com.alibaba.excel.EasyExcel;
|
|||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||
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.metadata.WriteSheet;
|
||||
import com.gunshi.project.xyt.util.excel.ExcelFillCellMergeStrategy;
|
||||
|
|
@ -28,15 +27,15 @@ public class ExcelUtil {
|
|||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param list 导出数据集合,加动态表头
|
||||
* @param list 导出数据集合,加动态表头
|
||||
* @param filename 工作表的名称
|
||||
* @param clazz 实体类
|
||||
* @param response 响应体
|
||||
* @param clazz 实体类
|
||||
* @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;
|
||||
try {
|
||||
out = getOutputStream(filename,response);
|
||||
out = getOutputStream(filename, response);
|
||||
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
|
||||
//是否自动关闭流
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
|
|
@ -46,7 +45,7 @@ public class ExcelUtil {
|
|||
builder.doWrite(list);
|
||||
} finally {
|
||||
try {
|
||||
if (out != null){
|
||||
if (out != null) {
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
|
@ -59,20 +58,20 @@ public class ExcelUtil {
|
|||
/**
|
||||
* 导出excel,合并指定单元格
|
||||
*
|
||||
* @param list 导出数据集合,加动态表头
|
||||
* @param list 导出数据集合,加动态表头
|
||||
* @param filename 工作表的名称
|
||||
* @param clazz 实体类
|
||||
* @param response 响应体
|
||||
* @param clazz 实体类
|
||||
* @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;
|
||||
try {
|
||||
out = getOutputStream(filename,response);
|
||||
if(type == 1){
|
||||
OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36,36,1,2);
|
||||
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36,36,3,6);
|
||||
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36,36,7,8);
|
||||
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36,36,9,12);
|
||||
out = getOutputStream(filename, response);
|
||||
if (type == 1) {
|
||||
OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(36, 36, 1, 2);
|
||||
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(36, 36, 3, 6);
|
||||
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(36, 36, 7, 8);
|
||||
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(36, 36, 9, 12);
|
||||
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
|
||||
//是否自动关闭流
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
|
|
@ -84,29 +83,31 @@ public class ExcelUtil {
|
|||
.registerWriteHandler(strategy3)
|
||||
.sheet(sheetName);
|
||||
builder.doWrite(list);
|
||||
}else{
|
||||
LoopMergeStrategy loopMergeStrategy = new LoopMergeStrategy(1,2,0);
|
||||
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33,37,0,0);
|
||||
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38,38,0,1);
|
||||
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38,38,3,5);
|
||||
OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38,38,7,9);
|
||||
OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38,38,11,13);
|
||||
} else {
|
||||
OnceAbsoluteMergeStrategy strategy1 = new OnceAbsoluteMergeStrategy(33, 37, 0, 0);
|
||||
OnceAbsoluteMergeStrategy strategy2 = new OnceAbsoluteMergeStrategy(38, 38, 0, 1);
|
||||
OnceAbsoluteMergeStrategy strategy3 = new OnceAbsoluteMergeStrategy(38, 38, 3, 5);
|
||||
OnceAbsoluteMergeStrategy strategy4 = new OnceAbsoluteMergeStrategy(38, 38, 7, 9);
|
||||
OnceAbsoluteMergeStrategy strategy5 = new OnceAbsoluteMergeStrategy(38, 38, 11, 13);
|
||||
ExcelWriterSheetBuilder builder = EasyExcel.write(out, clazz)
|
||||
//是否自动关闭流
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
.registerWriteHandler(new VoteTitleHandler(filename))
|
||||
.registerWriteHandler(loopMergeStrategy)
|
||||
.registerWriteHandler(strategy1)
|
||||
.registerWriteHandler(strategy2)
|
||||
.registerWriteHandler(strategy3)
|
||||
.registerWriteHandler(strategy4)
|
||||
.registerWriteHandler(strategy5)
|
||||
.sheet(sheetName);
|
||||
for (int i = 2; i < 33; i++) {
|
||||
OnceAbsoluteMergeStrategy strategy = new OnceAbsoluteMergeStrategy(i, i, 0, 1);
|
||||
builder.registerWriteHandler(strategy);
|
||||
}
|
||||
builder.doWrite(list);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
if (out != null){
|
||||
if (out != null) {
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
|
@ -118,17 +119,18 @@ public class ExcelUtil {
|
|||
|
||||
/**
|
||||
* 导出动态列
|
||||
* @param head 表头
|
||||
* @param data 数据
|
||||
*
|
||||
* @param head 表头
|
||||
* @param data 数据
|
||||
* @param filename
|
||||
* @param response
|
||||
* @param sheetName
|
||||
* @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;
|
||||
try {
|
||||
out = getOutputStream(filename,response);
|
||||
out = getOutputStream(filename, response);
|
||||
ExcelWriterSheetBuilder builder = EasyExcel.write(out)
|
||||
//是否自动关闭流
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
|
|
@ -139,7 +141,7 @@ public class ExcelUtil {
|
|||
builder.doWrite(data);
|
||||
} finally {
|
||||
try {
|
||||
if (out != null){
|
||||
if (out != null) {
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
|
@ -150,30 +152,31 @@ public class ExcelUtil {
|
|||
}
|
||||
|
||||
/**
|
||||
*导出动态列,带合并单元格
|
||||
* @param head 表头
|
||||
* @param data 表格数据
|
||||
* @param mergeRowIndex 从第几行开始合并
|
||||
* 导出动态列,带合并单元格
|
||||
*
|
||||
* @param head 表头
|
||||
* @param data 表格数据
|
||||
* @param mergeRowIndex 从第几行开始合并
|
||||
* @param mergeColumnIndex 合并字段的下标,如第一到五列new int[]{0,1,2,3,4}
|
||||
* @param filename
|
||||
* @param response
|
||||
* @param sheetName
|
||||
* @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;
|
||||
try {
|
||||
out = getOutputStream(filename,response);
|
||||
out = getOutputStream(filename, response);
|
||||
ExcelWriterSheetBuilder builder = EasyExcel.write(out)
|
||||
//是否自动关闭流
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex,mergeColumnIndex))
|
||||
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex))
|
||||
.head(head)
|
||||
.sheet(sheetName);
|
||||
builder.doWrite(data);
|
||||
} finally {
|
||||
try {
|
||||
if (out != null){
|
||||
if (out != null) {
|
||||
out.flush();
|
||||
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) {
|
||||
OutputStream out = null;
|
||||
try {
|
||||
out = getOutputStream(filename,response);
|
||||
out = getOutputStream(filename, response);
|
||||
ClassPathResource templateResource = new ClassPathResource(templatePath);
|
||||
ExcelWriter excelWriter = EasyExcel.write(out)
|
||||
ExcelWriter excelWriter = EasyExcel.write(out)
|
||||
.withTemplate(templateResource.getStream())
|
||||
.excelType(ExcelTypeEnum.XLSX)
|
||||
.build();
|
||||
|
|
@ -206,12 +209,12 @@ public class ExcelUtil {
|
|||
if (CollUtil.isEmpty(data)) {
|
||||
throw new IllegalArgumentException("数据为空");
|
||||
}
|
||||
excelWriter.fill(list,writeSheet);
|
||||
excelWriter.fill(list, writeSheet);
|
||||
excelWriter.fill(data, writeSheet);
|
||||
excelWriter.finish();
|
||||
} finally {
|
||||
try {
|
||||
if (out != null){
|
||||
if (out != null) {
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue