本文共 2365 字,大约阅读时间需要 7 分钟。
test.xlsx:
Code:
package poi;import static org.junit.Assert.*;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.List;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters;@RunWith(value=Parameterized.class)public class TestIterator { public TestIterator(Integer times) { } @Parameters public static Collectioninit(){ int times=200; Integer[][] parameters=new Integer[times][1]; for (int i = 0; i < times; i++) { parameters[i][0]=i; } return Arrays.asList(parameters); } @Test public void testItertor() throws IOException{ List expected=new ArrayList ();//rowNums.need to change according to demand for (int i = 0; i <=1 ; i++) { expected.add(i); } expected.add(3); expected.add(4); expected.add(6); List actual=new ArrayList (); String filePath="/poi/test.xlsx"; InputStream is=this.getClass().getResourceAsStream(filePath); Workbook wb=new XSSFWorkbook(is); Sheet sheet=wb.getSheetAt(0); for (Row row : sheet) { actual.add(row.getRowNum()); } assertEquals(expected, actual); }}
结果:通过验证。
源码解析:
org.apache.poi.xssf.usermodel.XSSFSheetXSSFRow的存放数据结构:private TreeMap_rows;
/** * @return an iterator of the PHYSICAL rows. Meaning the 3rd element may not * be the third row if say for instance the second row is undefined. * Call getRowNum() on each row if you care which one it is. */ @SuppressWarnings("unchecked") public IteratorrowIterator() { return (Iterator
)(Iterator ) _rows.values().iterator(); } /** * Alias for { @link #rowIterator()} to * allow foreach loops */ public Iterator
iterator() { return rowIterator(); }
转载地址:http://wpbql.baihongyu.com/