我有一个Java程序需要读取包含数据的特定范围的excel文件,例如从C6到I6。总行数会有所不同。 之后,我想将这些数据保存到一个对象中,最终保存到一个列表中。 下面是一个示例(数据从第6行开始。在这种情况下,最后一行数据在第10行结束):
---------------------------------------------------------------------
| C | D | E | F | G | H | I |
---------------------------------------------------------------------
(row 6) | 001 |10102011 | 874837 | Y | Y | TEST001 | No |
---------------------------------------------------------------------
(row 7) | 002 |11102011 | 8743834 | Y | Y | | No |
---------------------------------------------------------------------
(row 8) | 003 |15102011 | 609348 | N | Y | | No |
---------------------------------------------------------------------
(row 9) | 004 |20102011 | 111117 | N | Y | | No |
---------------------------------------------------------------------
(row 10) | 005 |30102011 | 837437 | Y | Y | | No |
---------------------------------------------------------------------
如何基于Java中的excel特定范围进行迭代?我在Apache POI中看到了这个CellReference,但不知道我应该如何使用它。我们假设路径等已声明为
(更新:通过使用StringBuffer,我找到了一种可以保存所有数据行的方法)
public void prepareExcel(InputStream excel){
Workbook wb = WorkbookFactory.create(excel);
Sheet sheet = wb.getSheetAt(0);
StringBuffer sb = new StringBuffer();
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
for (int cn = 5; cn < 23; cn++) {
Cell c = r.getCell(cn);
sb.append(c);
}
}
}
接下来的问题是,如何将此StringBuffer更改为保存到对象,然后更改为ArrayList? 或者有更好的方法吗?
假设行H可以为空。
对象在这里并不是那么重要,我们可以假设:
public class SaveObject{
private String rowC;
private String rowD;
private String rowE;
private String rowF;
private String rowG;
private String rowH;
private String rowI;
public String getRowC() {
return rowC;
}
public void setRowC(String rowC) {
this.rowC = rowC;
}
public String getRowD() {
return rowD;
}
public void setRowD(String rowD) {
this.rowD = rowD;
}
public String getRowE() {
return rowE;
}
public void setRowE(String rowE) {
this.rowE = rowE;
}
public String getRowF() {
return rowF;
}
public void setRowF(String rowF) {
this.rowF = rowF;
}
public String getRowG() {
return rowG;
}
public void setRowG(String rowG) {
this.rowG = rowG;
}
public String getRowH() {
return rowH;
}
public void setRowH(String rowH) {
this.rowH = rowH;
}
public String getRowI() {
return rowI;
}
public void setRowI(String rowI) {
this.rowI = rowI;
}
}