У меня есть файл excel с именем abc.xls в моем диске c: (локальный компьютер), теперь в этом файле excel на первом листе есть таблица, как показано ниже и эта ниже таблица может лежать в любом диапазоне с листом, поэтому я разработал нижеследующую программу java, которая будет сканировать весь лист сначала по строкам, а затем по столбцу и найдет ячейку, где TradeRef естьИтерирование по столбцам строки через poi в java
TradeRef TMS Deal Date
12 45 DRT 23/97/2014
23 36 QWE 21/07/2015
Теперь проблема в моей программе ниже - захватить ячейку, где находится TradeRef, а затем она итерации по столбцам, а затем аналогичным образом захватывает следующую строку и выполняет итерацию по столбцам
, но логика, которую я хочу применить, заключается в том, что когда он захватывает ячейку TradeRef и выполняет итерацию по столбцам и достигает последнего столбца таблицы, который является Date в приведенной выше таблице, тогда он должен дополнительно сканировать следующие 20 столбцов в пределах одной и той же строки, и если в течение следующих 20 столбцов нет ячейки, имеющей какое-либо значение, тогда она должна перейти к следующей строке, и если в пределах 20 столбцов это будет означать, что любая ячейка может иметь значение, тогда в этом случае она должна прочитать эту ячейку значение
так что было бы, как
TradeRef TMS Deal Date <----- scan next 20 columns is there is no value in next 20 cells then move to next row else include that cell value also------->
12 45 DRT 23/97/2014
23 36 QWE 21/07/2015
поэтому, пожалуйста, посоветуйте, как реализовать вышеупомянутую логику сканирования следующего 20 столбцы в строке ниже моего ранее реализация, которая является
public class AAA {
public static void main(String[] args) throws IOException {
FileInputStream file = null ;
try {
file = new FileInputStream(new File("C:\\abc.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet firstSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = firstSheet.iterator();
Cell c = findFirstRow(firstSheet);
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
file.close();
}
}
public static Cell findFirstRow(HSSFSheet firstSheet) {
for (Row row : firstSheet) {
for (Cell cell : row) {
cell.setCellType(cell.CELL_TYPE_STRING);
if ("TradeRef".equals(cell.getStringCellValue())) {
int row1 = cell.getRowIndex() + 1;
int col = cell.getColumnIndex();
if (firstSheet.getRow(row1) == null)
throw new RuntimeException("Row " + row1 + 1 + " is empty!");
Cell startOfFirstDataRow = firstSheet.getRow(row1).getCell(col);
if (startOfFirstDataRow == null) {
CellReference ref = new CellReference(row1, col);
throw new RuntimeException("Data not found at " + ref.formatAsString());
}
return startOfFirstDataRow;
}
}
}
throw new RuntimeException("TradingRef header cell not found!");
}
}
поэтому, пожалуйста, посоветуйте, как я могу реализовать описанную выше логику сканирования следующих 20 столбцов
row.cellIterator знает число клеток очень хорошо, сканирование в дальнейшем возможно (row.getCell), но совершенно бессмысленно –
возможно дубликат [Читать файл excel 2010 apache poi, игнорируя пустые ячейки] (http://stackoverflow.com/questions/13048981/read-excel-file-2010-apache-poi-ignoring-empty-cells) – TheCodingFrog
@ammoQ Спасибо за консультацию попросите вас показать, как мы можем сканировать следующие 20 столбцов, пожалуйста, –