Browse Source

修改宽度策略

bugfix
zhuangjiaju 5 years ago
parent
commit
41460978d4
  1. 12
      src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java
  2. 10
      src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java
  3. 5
      src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java
  4. 11
      src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java

12
src/main/java/com/alibaba/excel/write/metadata/holder/AbstractWriteHolder.java

@ -8,9 +8,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Sheet;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ConverterKeyBuild;
@ -37,7 +35,6 @@ import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.property.ExcelWriteHeadProperty;
import com.alibaba.excel.write.style.RowCellStyleStrategy;
import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.column.AbstractHeadColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
@ -248,15 +245,16 @@ public abstract class AbstractWriteHolder extends AbstractHolder implements Writ
}
private void dealColumnWidth(List<WriteHandler> handlerList) {
WriteHandler columnWidthStyleStrategy = new AbstractColumnWidthStyleStrategy() {
WriteHandler columnWidthStyleStrategy = new AbstractHeadColumnWidthStyleStrategy() {
@Override
protected void setColumnWidth(Sheet sheet, Cell cell, Head head) {
protected Integer columnWidth(Head head) {
if (head == null) {
return;
return null;
}
if (head.getColumnWidthProperty() != null) {
sheet.setColumnWidth(head.getColumnIndex(), head.getColumnWidthProperty().getWidth());
return head.getColumnWidthProperty().getWidth();
}
return null;
}
};
handlerList.add(columnWidthStyleStrategy);

10
src/main/java/com/alibaba/excel/write/style/column/AbstractColumnWidthStyleStrategy.java

@ -32,10 +32,7 @@ public abstract class AbstractColumnWidthStyleStrategy implements CellWriteHandl
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,
Head head, int relativeRowIndex, boolean isHead) {
if (!isHead && relativeRowIndex != 0) {
return;
}
setColumnWidth(writeSheetHolder.getSheet(), cell, head);
setColumnWidth(writeSheetHolder.getSheet(), cell, head, relativeRowIndex, isHead);
}
/**
@ -44,7 +41,10 @@ public abstract class AbstractColumnWidthStyleStrategy implements CellWriteHandl
* @param sheet
* @param cell
* @param head
* @param relativeRowIndex
* @param isHead
*/
protected abstract void setColumnWidth(Sheet sheet, Cell cell, @Nullable Head head);
protected abstract void setColumnWidth(Sheet sheet, Cell cell, @Nullable Head head, int relativeRowIndex,
boolean isHead);
}

5
src/main/java/com/alibaba/excel/write/style/column/AbstractHeadColumnWidthStyleStrategy.java

@ -13,7 +13,10 @@ import com.sun.istack.internal.Nullable;
*/
public abstract class AbstractHeadColumnWidthStyleStrategy extends AbstractColumnWidthStyleStrategy {
@Override
protected void setColumnWidth(Sheet sheet, Cell cell, Head head) {
protected void setColumnWidth(Sheet sheet, Cell cell, Head head, int relativeRowIndex, boolean isHead) {
if (!isHead && relativeRowIndex != 0) {
return;
}
Integer width = columnWidth(head);
if (width != null) {
sheet.setColumnWidth(cell.getColumnIndex(), columnWidth(head));

11
src/main/java/com/alibaba/excel/write/style/column/SimpleColumnWidthStyleStrategy.java

@ -1,8 +1,5 @@
package com.alibaba.excel.write.style.column;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import com.alibaba.excel.metadata.Head;
/**
@ -10,7 +7,7 @@ import com.alibaba.excel.metadata.Head;
*
* @author zhuangjiaju
*/
public class SimpleColumnWidthStyleStrategy extends AbstractColumnWidthStyleStrategy {
public class SimpleColumnWidthStyleStrategy extends AbstractHeadColumnWidthStyleStrategy {
private Integer columnWidth;
/**
@ -25,9 +22,7 @@ public class SimpleColumnWidthStyleStrategy extends AbstractColumnWidthStyleStra
}
@Override
protected void setColumnWidth(Sheet sheet, Cell cell, Head head) {
if (columnWidth != null) {
sheet.setColumnWidth(cell.getColumnIndex(), columnWidth);
}
protected Integer columnWidth(Head head) {
return columnWidth;
}
}

Loading…
Cancel
Save