Heute möchte ich kurz erklären, wie POI verwendet wird.
Weitere Informationen finden Sie auf der offiziellen Website unten Apache POI
Erstellen Sie zunächst eine Arbeitsmappe, an der Sie arbeiten möchten Eine Einschränkung ist, dass Sie, wenn Sie eine vorhandene Datei lesen möchten, zuerst einen FileInputStream erstellen müssen. Beim Schreiben ist es in Ordnung, wenn Sie beim Schreiben einen FileOutputStream generieren
//Zum Schreiben
Workbook workbook = new XSSFWorkbook();//Für xlsx- und xlsm-Dateien
//Verschiedene Verarbeitung
//Generierung des Ausgabeziels
String filePath = "Excel-Datei.xlsx"
tyr(FileOutputStream output = new FileOutputStream(filePash)){
//Schreiben
workbook.write(output);
}
//Zum Lesen
//Quellengenerierung
String filePath = "Excel-Datei.xlsx"
tyr(FileInputStream input = new FileInputStream(filePash)){
//Arbeitsmappengenerierung
Workbook workbook = WorkbookFactory.create(input);
//Verschiedene Verarbeitung
}
Wenn Sie mit alten XLS-Dateien arbeiten möchten, verwenden Sie HSSF-Arbeitsmappe anstelle von XSSF-Arbeitsmappe, um die Arbeitsmappe zu generieren.
Danach erstellen Sie im Grunde eine Instanz mithilfe einer Arbeitsmappe.
Erstellen Sie ein Blatt, an dem Sie arbeiten möchten Verwenden Sie beim Schreiben createSheet, um ein Blatt zu generieren, und verwenden Sie beim Lesen getSheet oder getSheetAt, um ein Blatt zu generieren.
//Zum Schreiben
Sheet sheet = workbook.createSheet("Blattname");
//Zum Lesen
Sheet sheet = workbook.getSheetAt(0);//Holen Sie sich das 0. Blatt
//Oder
Sheet sheet = workbook.getSheet("Blattname")//Blattnameがわかっている場合はこちらで
Beim tatsächlichen Schreiben und Lesen von Zeichen wird mithilfe des diesmal erstellten Blattes eine dedizierte Instanz erstellt.
In POI wird es zu einem Bild, dass es keinen Inhalt gibt, nur indem ein Blatt erstellt wird Sie müssen also eine Zeile generieren
//Zum Schreiben
Row row = sheet.createRow(0);//Zeile 0 generieren(Zeilen zählen ab Zeile 0)
//Zum Lesen
Row row = sheet.getRow(0);//Lesen Sie Zeile 0
Die Einschränkung ist, dass Sie im Voraus eine Zeile erstellen müssen. Als Verwendung denke ich, dass Sie die maximale Zeile irgendwo bestimmen und so viele Zeilen generieren können, wie es gibt ...
Generieren Sie für jede Zeile eine Zelle Zellen ohne Zeilen können nicht generiert werden
//Zum Schreiben
Cell cell = row.createCell(0);
//Zum Lesen
Cell cell = row.getCell(0);
Für diese Zelle werden Zeichen, Farben, Schriftarten usw. festgelegt.
Wenn Sie dies tun können, ist der Rest einfach
//Zum Schreiben
cell.setCellValue("AIUEO");
//Zum Lesen
String cellValue = cell.getStringCellValue();
Verwenden Sie zum Lesen die Methode getxxxCellValue Der Datentyp kann für xxx angegeben werden
Schriftarten sind eine Eigenschaft der Arbeitsmappe und müssen aus der Arbeitsmappe generiert werden Bitte beachten Sie, dass bei einem Fehler im Bereich der Schriftart die Schriftart in allen Zellen festgelegt wird. Wenn Sie Farbe und Dicke unterscheiden möchten, generieren Sie bitte unterschiedliche Schriftarten.
Font font = workbook.createFont();
//Mach es fett
font.setBold(true);
//Ändern Sie die Farbe der Buchstaben
//Generieren Sie zuerst die Farbe
XSSFColor color = new XSSFColor();
color.setARGBHex("FF0000"/*rot*/);//Bei Angabe durch Farbcode
//Oder
XSSFColor color = new XSSFColor(new java.awt.Color(255,0,0)/*rot*/);//Bei Angabe in RGB
//Stellen Sie die Farbe für die Schriftart ein
XSSFFont font = (XSSFFont) workbook.createFont();
font.setColor(color);
POI erfordert möglicherweise einen Downcast, wenn Sie eine Instanz aus einer Arbeitsmappe erhalten Wenn Sie es als Schrifttyp (Schnittstelle) anstelle des XSSFFont-Typs erhalten, wird möglicherweise ein Kompilierungsfehler in dem Teil der Methode angezeigt, den Sie verwenden möchten.
Wir werden den Zellenstil festlegen und den Zellenstil auf die Zelle anwenden. Der Zellenstil ist eine Arbeitsmappeneigenschaft, daher müssen Sie ihn aus der Arbeitsmappe abrufen Wie bei Schriftarten müssen Sie unterschiedliche Zellenstile generieren, wenn Sie für jede Zelle unterschiedliche Hintergrundfarben wünschen.
//Generieren Sie zuerst die Farbe
XSSFColor color = new XSSFColor();
color.setARGBHex("FF0000"/*rot*/);
//Zellenstil generieren
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
//Stellen Sie die Farbe auf den Zellenstil ein
cellStyle.setFillForegroundColor(color);
//Legen Sie fest, wie gefüllt werden soll
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//Einfach ausfüllen
//Wenden Sie den Zellenstil auf die Zelle an
cell.setCellStyle(cellStyle);
Ich mache einen Downcast, wenn ich einen Zellenstil generiere Nach der ursprünglichen Java-Idee ist es besser, sie nach Schnittstellentyp (CellStyle) zu empfangen. Da es jedoch Methoden gibt, die nur mit XSSFCellStyle verwendet werden können, wird sie von XSSFCellStyle empfangen.
Rahmen (Ränder) werden im Zellenstil festgelegt Wenden Sie dann den Zellenstil auf die Zelle an ...
//Zellenstil generieren
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
//Rahmeneinstellung
cellStyle.setBorderTop(BorderStyle.THIN/*Häufig verwendete dünne Linien*/);//Einstellungen für den oberen Rand
cellStyle.setBorderLeft(BorderStyle.THIN);//Einstellung für den linken Rand
cellStyle.setBorderRight(BorderStyle.THIN);//Einstellung des rechten Randes
cellStyle.setBorderBottom(BorderStyle.THIN);//Einstellung des unteren Randes
//Wenden Sie den Zellenstil auf die Zelle an
cell.setCellStyle(cellStyle);
Stellen Sie die Zellenbreite für das Blatt ein Wenn Sie Japanisch haben, ist die Zellenbreite etwas schmal, es sei denn, Sie legen die Schriftart explizit fest.
//Schriftart generieren
XSSFFont font = (XSSFFont) workbook.createFont();
font.setFontName("Yu Gothic");//Sie können den Schriftnamen verwenden, indem Sie ihn direkt aus Excel kopieren.
//Generieren Sie Zellstile und wenden Sie die Schriftarteinstellungen an
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
cellStyle.setFont(font);
//Passt die Breite aller Zellen automatisch an
sheet.autoSizeColumn();
・ Es wird empfohlen, die erforderliche Anzahl von Zeilen und Zellen im Voraus zu generieren. Wenn Sie es mit dem angewendeten Zellenstil generieren, müssen Sie nur die Werte in der Zelle ändern! Ich erhalte eine Ausnahme, wenn ich versuche, auf eine Zeile zuzugreifen, die nicht generiert wurde
-Wenn versucht wird, einen Wert in einer Zelle festzulegen, wird nichts eingegeben, wenn er null ist.
-Wenn Sie so etwas wie einen DB-Spaltennamen in eine Excel-Datei einfügen möchten, müssen Sie diesen Teil selbst erstellen.
Recommended Posts