如何从 excel 文件中获取特定的单元格值
How can I get a specific cell value from an excel file
我想寻求一点帮助!
我有一个简单的 xlsx 文件,我想通过指定其唯一 ID(在本例中为用户名)来获取特定单元格的值。例如,如何获取 user_2 的年龄值?
xlsx file content:
这是我使用的代码:
package test;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
public void XlsxRead_2() {
getvalue_1();
}
public static void getvalue_1() {
XSSFRow row;
XSSFCell cell;
String[][] value = null;
try {
FileInputStream inputStream = new FileInputStream("C:\test.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
// get sheet number
int sheetCn = workbook.getNumberOfSheets();
for (int cn = 0; cn < sheetCn; cn++) {
// get 0th sheet data
XSSFSheet sheet = workbook.getSheetAt(cn);
// get number of rows from sheet
int rows = sheet.getPhysicalNumberOfRows();
// get number of cell from row
int cells = sheet.getRow(cn).getPhysicalNumberOfCells();
value = new String[rows][cells];
for (int r = 0; r < rows; r++) {
row = sheet.getRow(r); // bring row
if (row != null) {
for (int c = 0; c < cells; c++) {
cell = row.getCell(c);
if (cell != null) {
switch (cell.getCellType()) {
case NUMERIC:
value[r][c] = ""
+ cell.getNumericCellValue();
break;
case STRING:
value[r][c] = ""
+ cell.getStringCellValue();
break;
case BLANK:
value[r][c] = "[BLANK]";
break;
default:
}
System.out.print(value[r][c] + "\t");
} else {
System.out.print("[null]\t");
}
}
System.out.print("\n");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Test obj = new Test();
obj.XlsxRead_2();
}
}
结果是:
姓名年龄身高
user_1 35.0 111.0
user_2 18.0 112.0
user_3 55.0 123.0
您可以使用 WorkbookFactory,以下代码片段可能会有所帮助。
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> iterator = sheet.iterator();
while(iterator.hasNext()) {
Row row = iterator.next();
if(row.getCell(0) == "username") {
System.out.print(row.getCell(1));
System.out.print(row.getCell(2));
}
}
我想寻求一点帮助!
我有一个简单的 xlsx 文件,我想通过指定其唯一 ID(在本例中为用户名)来获取特定单元格的值。例如,如何获取 user_2 的年龄值?
xlsx file content:
这是我使用的代码:
package test;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
public void XlsxRead_2() {
getvalue_1();
}
public static void getvalue_1() {
XSSFRow row;
XSSFCell cell;
String[][] value = null;
try {
FileInputStream inputStream = new FileInputStream("C:\test.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
// get sheet number
int sheetCn = workbook.getNumberOfSheets();
for (int cn = 0; cn < sheetCn; cn++) {
// get 0th sheet data
XSSFSheet sheet = workbook.getSheetAt(cn);
// get number of rows from sheet
int rows = sheet.getPhysicalNumberOfRows();
// get number of cell from row
int cells = sheet.getRow(cn).getPhysicalNumberOfCells();
value = new String[rows][cells];
for (int r = 0; r < rows; r++) {
row = sheet.getRow(r); // bring row
if (row != null) {
for (int c = 0; c < cells; c++) {
cell = row.getCell(c);
if (cell != null) {
switch (cell.getCellType()) {
case NUMERIC:
value[r][c] = ""
+ cell.getNumericCellValue();
break;
case STRING:
value[r][c] = ""
+ cell.getStringCellValue();
break;
case BLANK:
value[r][c] = "[BLANK]";
break;
default:
}
System.out.print(value[r][c] + "\t");
} else {
System.out.print("[null]\t");
}
}
System.out.print("\n");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Test obj = new Test();
obj.XlsxRead_2();
}
}
结果是:
姓名年龄身高
user_1 35.0 111.0
user_2 18.0 112.0
user_3 55.0 123.0
您可以使用 WorkbookFactory,以下代码片段可能会有所帮助。
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> iterator = sheet.iterator();
while(iterator.hasNext()) {
Row row = iterator.next();
if(row.getCell(0) == "username") {
System.out.print(row.getCell(1));
System.out.print(row.getCell(2));
}
}