Nach dem letzten Mal ist diesmal auch der Inhalt des Apache POI.
Über den Teil, der in einer anderen Methode über den Teil beschrieben wurde, um den Wert der vorherigen Zelle zu erhalten. Es scheint, dass der Zellenwert nicht einfach so kommt, wie er ist. Auszug aus der vorherigen Methode.
SamplePOI.java
private static String getCellStringValue(Cell cell) {
String retStr;
CellType cellType = cell.getCellType();
switch (cellType) {
case STRING:
retStr = cell.getStringCellValue();
break;
case NUMERIC:
retStr = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
retStr = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA:
retStr = String.valueOf(cell.getCellFormula());
break;
case ERROR:
retStr = String.valueOf(cell.getErrorCellValue());
break;
default:
retStr = "";
break;
}
return retStr;
}
}
Hier wird zuerst der Typ der zu erfassenden Zelle bestimmt (Variablentyp in Java? State?). Es scheint, dass sich die für die Erfassung verwendete Methode je nach Typ ändert.
Sie können den Zelltyp mit der Methode getCellType abrufen. Insbesondere gibt es die folgenden sieben. ・ ** CellType._NONE ** Unbekannte Zelle. Ich bin nicht sicher, aber es ist eine Zelle, die selten erscheint.
・ ** CellType.BLANK ** Leere Zelle.
・ ** CellType.BOOLEAN ** Boolescher Wert. Für Zellen, die nach TRUE, FALSE oder Authentizität fragen (z. B. "= A1 = A2").
・ ** CellType.ERROR ** Error. Möglicherweise ist ein Berechnungsfehler eine Zelle, die einen Fehler in der Formel aufweist.
・ ** CellType.FORMULA ** Formel. Eine Zelle, die wie "= A1 + B1" berechnet und als berechneter Wert auf dem Display angezeigt wird. Da die Formel selbst mit der Methode getCellFormula erhalten werden kann, kann "= A1 + B1" wie durch Konvertieren in String erhalten werden.
・ ** CellType.NUMERIC ** Numerischer Wert. Eine Zelle, die Zahlen oder Daten enthält.
・ ** CellType.STRING ** Zeichenkette. Eine Zelle, deren Inhalt Text ist. Wenn Sie in Excel Zahlen als Zeichenfolgen verwendet haben, werden die Zahlen auch hier angezeigt. (Sollte)
SamplePOI2.java
public class SamplePOI2 {
/*
*Dieser Prozess
*/
public static void main(String[] args) {
//Geben Sie hier den vollständigen Pfad der Excel-Datei ein, die Sie importieren möchten
String ExcelPath = "";
//Objekte für Excel
Workbook wb;
Sheet sh;
Row row;
Cell cell;
//Liste für gespeicherte Daten
List<String> columnA_List = new ArrayList<>();
try (InputStream is = new FileInputStream(ExcelPath)) {
//Importieren Sie die Excel-Zieldatei in Java
wb = WorkbookFactory.create(is);
//Geben Sie das erste Blatt der Zieldatei an
sh = wb.getSheetAt(0);
//Holen Sie sich die maximale Zeile im Blatt
int rowMaxA = sh.getLastRowNum();
//Drehen Sie die Schleife für die maximale Zeile und erhalten Sie die Zelle der Spalte A als String-Typ
for (int i = 0; i <= rowMaxA; i++) {
row = sh.getRow(i);
if (row == null) {
continue;
}
cell = row.getCell(0);
String cellValue = getCellTypes(cell);
columnA_List.add(cellValue);
}
//Ausgabe an die Konsole
for (String outStr : columnA_List) {
System.out.println(outStr);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
*Bestimmt den Zellenstatus und gibt ihn als String-Typ zurück.
*/
private static String checkCellType(Cell cell) {
String retStr="";
CellType cellType = cell.getCellType();
switch (cellType) {
case _NONE:
retStr ="_NONE";
break;
case BLANK:
retStr ="BLANK";
break;
case BOOLEAN:
retStr ="BOOLEAN";
break;
case ERROR:
retStr ="ERROR";
break;
case FORMULA:
retStr ="FORMULA";
break;
case NUMERIC:
retStr ="NUMERIC";
break;
case STRING:
retStr ="STRING";
break;
}
return retStr;
}
Das Ergebnis des Ladens dieses Excel ist
cellType.result
BLANK
BOOLEAN
ERROR
FORMULA
NUMERIC
STRING
ist geworden.
Wenn Sie den Zelltyp kennen, erhalten Sie den Wert für jeden Zelltyp. STRING getStringCellValue() Oder cell.getRichStringCellValue().getString() Erhalten bei. Ich verstehe den Unterschied nicht wirklich.
NUMERIC Wenn Sie es int machen möchten, geben Sie ein getNumericCellValue() Wenn Sie das Datum usw. in Datumstyp erhalten möchten getDateCellValue()
FORMULA getCellFormula() Ausdruck kann als String-Typ erhalten werden
ERROR getErrorCellValue() Als Fehlercode abrufen. (Byte)
BOOLEAN Es ist ein boolescher Typ und kann so wie er ist verwendet werden. getBooleanCellValue()
Es ist so.
Recommended Posts