Опитвам се да получа координатите на клетка, точно сега пиша следващия код:
for (Row row : sheet) {
for(Cell cell : row){
// how to get a cell coordinates?
}
}
Как мога да получа координатите на клетка (dx1, dx2, dy1, dy2)?
Опитвам се да получа координатите на клетка, точно сега пиша следващия код:
for (Row row : sheet) {
for(Cell cell : row){
// how to get a cell coordinates?
}
}
Как мога да получа координатите на клетка (dx1, dx2, dy1, dy2)?
най-краткият начин за получаване на клетъчен адрес е:
cell.getAddress().formatAsString()
за да получите име на лист, направете следното
cell.getSheet().getSheetName()
Очевидното решение беше предложено от user2310289, но това няма да работи като итераторите пропускане на празни редове и клетки.
Така че, една опция е да итерирате ръчно, като се грижите за празните клетки, и тогава винаги ще знаете къде е клетката ви с код като:
// Decide which rows to process
int rowStart = Math.min(15, sheet.getFirstRowNum());
int rowEnd = Math.max(1400, sheet.getLastRowNum());
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
int lastColumn = Math.max(r.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT);
for (int cn = 0; cn < lastColumn; cn++) {
Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
if (c == null) {
// The spreadsheet is empty in this cell
} else {
// Do something useful with the cell's contents
CellReference cr = new CellReference(c);
System.out.println("Cell at " + rowNum + "," + cn + " found, that's " + cr.formatAsString());
}
}
}
Или, ако искате да използвате лесните итератори, трябва да потърсите индекса на ред и клетка от клетка, напр.
for (Row r : sheet) {
for (Cell c : r) {
int columnNumber = c.getColumnIndex();
int rowNumber = c.getRow().getRowNum();
CellReference cr = new CellReference(c);
System.out.println("Cell at " + rowNum + "," + columnNumber + " found, that's " + cr.formatAsString());
}
}
Направих следния код за получаване на координати на клетката на Excel. Надявам се това да ви помогне.
public static void searchSheet(String searchText, XSSFSheet sheet)
{
int flag=0;
for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++)
{
XSSFRow row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++)
{
XSSFCell cell = row.getCell(j);
String CellData=cell.toString();
if(searchText.equals(CellData))
{
flag=1;
CellData=row.getCell(j+1).toString();
System.out.println(CellData);
System.out.println("String Found At Row="+ i +" and At Column="+j);
}
}
break;
}
if(flag==0)
{
System.out.println("String Not Found");
}
}