You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.3 KiB
52 lines
2.3 KiB
package com.alibaba.excel.analysis.v07.handlers; |
|
|
|
import java.util.LinkedHashMap; |
|
|
|
import org.xml.sax.Attributes; |
|
|
|
import com.alibaba.excel.constant.ExcelXmlConstants; |
|
import com.alibaba.excel.context.xlsx.XlsxReadContext; |
|
import com.alibaba.excel.enums.RowTypeEnum; |
|
import com.alibaba.excel.metadata.Cell; |
|
import com.alibaba.excel.read.metadata.holder.ReadRowHolder; |
|
import com.alibaba.excel.read.metadata.holder.xlsx.XlsxReadSheetHolder; |
|
import com.alibaba.excel.util.CollectionUtils; |
|
import com.alibaba.excel.util.PositionUtils; |
|
|
|
/** |
|
* Cell Handler |
|
* |
|
* @author jipengfei |
|
*/ |
|
public class RowTagHandler extends AbstractXlsxTagHandler { |
|
|
|
@Override |
|
public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) { |
|
XlsxReadSheetHolder xlsxReadSheetHolder = xlsxReadContext.xlsxReadSheetHolder(); |
|
int rowIndex = PositionUtils.getRowByRowTagt(attributes.getValue(ExcelXmlConstants.ATTRIBUTE_R), |
|
xlsxReadSheetHolder.getRowIndex()); |
|
Integer lastRowIndex = xlsxReadContext.readSheetHolder().getRowIndex(); |
|
while (lastRowIndex + 1 < rowIndex) { |
|
xlsxReadContext.readRowHolder(new ReadRowHolder(lastRowIndex + 1, RowTypeEnum.EMPTY, |
|
xlsxReadSheetHolder.getGlobalConfiguration(), new LinkedHashMap<Integer, Cell>())); |
|
xlsxReadContext.analysisEventProcessor().endRow(xlsxReadContext); |
|
xlsxReadSheetHolder.setColumnIndex(null); |
|
xlsxReadSheetHolder.setCellMap(new LinkedHashMap<Integer, Cell>()); |
|
lastRowIndex++; |
|
} |
|
xlsxReadSheetHolder.setRowIndex(rowIndex); |
|
} |
|
|
|
@Override |
|
public void endElement(XlsxReadContext xlsxReadContext, String name) { |
|
XlsxReadSheetHolder xlsxReadSheetHolder = xlsxReadContext.xlsxReadSheetHolder(); |
|
RowTypeEnum rowType = |
|
CollectionUtils.isEmpty(xlsxReadSheetHolder.getCellMap()) ? RowTypeEnum.EMPTY : RowTypeEnum.DATA; |
|
xlsxReadContext.readRowHolder(new ReadRowHolder(xlsxReadSheetHolder.getRowIndex(), rowType, |
|
xlsxReadSheetHolder.getGlobalConfiguration(), xlsxReadSheetHolder.getCellMap())); |
|
xlsxReadContext.analysisEventProcessor().endRow(xlsxReadContext); |
|
xlsxReadSheetHolder.setColumnIndex(null); |
|
xlsxReadSheetHolder.setCellMap(new LinkedHashMap<Integer, Cell>()); |
|
} |
|
|
|
}
|
|
|