Skip to content
Open
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package cn.idev.excel.test.fix.issue116;

import cn.idev.excel.EasyExcel;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.HeadStyle;
import cn.idev.excel.enums.BooleanEnum;
import cn.idev.excel.test.util.TestFileUtil;
import java.util.ArrayList;
import java.util.List;
import lombok.*;

/**
* @author zz_zhi
*/
public class HiddenShellTest {

public static void main(String[] args) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please write unit test than main for verification

String fileName = TestFileUtil.getPath() + "hiddenShellTest" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName, DemoModel.class).sheet("模板").doWrite(listDemoModel());
}

public static List<DemoModel> listDemoModel() {
List<DemoModel> dataList = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
String category = "我是姓名" + i;
DemoModel exportModel = new DemoModel(category, i, "test" + i);
dataList.add(exportModel);
}
return dataList;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try to write a real unit test? not just perform the method

}

@Data
@AllArgsConstructor
@NoArgsConstructor
public static class DemoModel {

@ExcelProperty("名字")
private String name;

@ExcelProperty("年龄")
@HeadStyle(hidden = BooleanEnum.TRUE)
private Integer age;

@ExcelProperty("test")
private String test;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import cn.idev.excel.enums.poi.FillPatternTypeEnum;
import cn.idev.excel.enums.poi.HorizontalAlignmentEnum;
import cn.idev.excel.enums.poi.VerticalAlignmentEnum;
import cn.idev.excel.write.handler.impl.HiddenShellWriteHandler;
import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
Expand All @@ -31,6 +34,7 @@

/**
* Set the cell's using this style to be hidden
* @see HiddenShellWriteHandler#afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder)
*/
BooleanEnum hidden() default BooleanEnum.DEFAULT;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package cn.idev.excel.write.handler.impl;

import cn.idev.excel.annotation.write.style.HeadStyle;
import cn.idev.excel.metadata.property.StyleProperty;
import cn.idev.excel.util.BooleanUtils;
import cn.idev.excel.write.handler.SheetWriteHandler;
import cn.idev.excel.write.metadata.holder.WriteSheetHolder;
import cn.idev.excel.write.metadata.holder.WriteWorkbookHolder;
import cn.idev.excel.write.property.ExcelWriteHeadProperty;
import org.apache.poi.ss.usermodel.Sheet;

/**
* hidden she'll row
*
* @author zz_zhi
* @see HeadStyle#hidden()
*/
public class HiddenShellWriteHandler implements SheetWriteHandler {

@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
ExcelWriteHeadProperty excelWriteHeadProperty = writeWorkbookHolder.getExcelWriteHeadProperty();
if (excelWriteHeadProperty != null) {
excelWriteHeadProperty.getHeadMap().forEach((key, value) -> {
if (null != value) {
StyleProperty headStyleProperty = value.getHeadStyleProperty();
if (null != headStyleProperty) {
if (BooleanUtils.isTrue(headStyleProperty.getHidden())) {
Sheet sheet = writeSheetHolder.getSheet();
sheet.setColumnHidden(key, true);
}
}
}
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import cn.idev.excel.write.handler.chain.SheetHandlerExecutionChain;
import cn.idev.excel.write.handler.chain.WorkbookHandlerExecutionChain;
import cn.idev.excel.write.handler.context.CellWriteHandlerContext;
import cn.idev.excel.write.handler.impl.HiddenShellWriteHandler;
import cn.idev.excel.write.merge.LoopMergeStrategy;
import cn.idev.excel.write.merge.OnceAbsoluteMergeStrategy;
import cn.idev.excel.write.metadata.WriteBasicParameter;
Expand Down Expand Up @@ -284,6 +285,9 @@ protected void initAnnotationConfig(List<WriteHandler> handlerList, WriteBasicPa
dealColumnWidth(handlerList);
}

// fix #116
handlerList.add(new HiddenShellWriteHandler());

dealStyle(handlerList);
dealRowHigh(handlerList);
dealOnceAbsoluteMerge(handlerList);
Expand Down