-1
データがExcel + 10 +列のシートにあります。特定の列データを新しいシートにコピーするか、コンソールに表示したいと思います。私は変数に1つの列の名前を取って、ヘッダー行の各セルでその列のデータを新しいシートにコピーするか、カーソルに表示するかどうかをチェックします。 次のコードで試しましたが、期待される出力が得られませんでした。私を助けてください。JAVAを使用してヘッダーが一致する場合、特定の列データをコピーするには
コード:
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Read {
public static void main(String[] args) throws Exception{
Read read = new Read();
String x ="Address";
int columnIndex = 0;
read.extractExcelContentByColumnIndex(columnIndex,x);
}
ArrayList<String> extractExcelContentByColumnIndex(int columnIndex, String colName)
{
ArrayList<String> columndata = null;
String x ="Address";
try {
File f = new File("abc.xlsx");
FileInputStream ios = new FileInputStream(f);
XSSFWorkbook workbook = new XSSFWorkbook(ios);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
columndata = new ArrayList<String>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
System.out.println(row.getRowNum());
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
/*String temp=cell.getStringCellValue();
System.out.println(temp);*/
if(row.getRowNum() > 0){ //To filter column headings
if(cell.getColumnIndex() == columnIndex){// To match column index
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
columndata.add(cell.getNumericCellValue()+"");
break;
case Cell.CELL_TYPE_STRING:
columndata.add(cell.getStringCellValue());
break;
}
}
}
}
}
ios.close();
System.out.println(columndata);
} catch (Exception e) {
e.printStackTrace();
}
return columndata;
}
}