Ich werde täglich von dem, was ich im Unternehmen gelernt habe, etwas ausgeben. Erstellen Sie dieses Mal eine Excel-Datei (.xlsx) mit "Apache POI".
Bereiten Sie die Bibliothek unter der folgenden URL vor. Dieses Mal werden wir die neueste Version von "poi-bin-3.17-20170915" verwenden. (Stand Dezember 2017)
--WorkBook-Klasse (für Arbeitsmappen)
Für diese Klassen gibt es zwei Formate: "HSSF" und "XSSF".
Es bezieht sich auf das Excel-Dateiformat.
Art | Datei Format |
---|---|
HSSF | Dateiformat bis Excel 2003 |
XSSF | Dateiformat im OOXML-Format in Excel 2007 |
python
/**
*Arbeitsmappe erstellen
*/
// HSSF
HSSFWorkbook workbook1 = new HSSFWorkbook();
// XSSF
XSSFWorkbook workbook2 = new XSSFWorkbook();
// Workbook (Gemeinsame Schnittstelle für die HSSFWorkbook-Klasse und die XSSFWorkbook-Klasse)
Workbook workbook3 = new HSSFWorkbook();
Workbook workbook4 = new XSSFWorkbook();
python
/**
*Erstellen eines Blattes, Angeben eines Blattes
*/
// HSSF
HSSFSheet sheet1 = workbook1.createSheet();
//Bezeichnung nach Blattname
sheet1 = workbook1.getSheet("Blatt1");
//Bezeichnet durch Index(Die Blattnummern beginnen bei 0)
sheet1 = workbook1.getSheetAt(0);
// XSSF
XSSFSheet sheet2 = workbook2.createSheet();
/*Blattspezifikation weggelassen*/
// Sheet (Gemeinsame Schnittstelle für HSSFSheet-Klasse und XSSFSheet-Klasse)
Sheet sheet3 = workbook3.createSheet();
/*Blattspezifikation weggelassen*/
Sheet sheet4 = workbook4.createSheet();
/*Blattspezifikation weggelassen*/
python
/**
*Linie erstellen, Linie angeben
*/
// HSSF (Zeilennummern beginnen bei 0)
HSSFRow row1 = sheet1.createRow(0);
//Angeben einer Zeile(Zeilennummern beginnen bei 0)
row1 = sheet1.getRow(0);
// XSSF (Zeilennummern beginnen bei 0)
XSSFRow row2 = sheet2.createRow(0);
/*Leitungsspezifikation weggelassen*/
// Row (Gemeinsame Schnittstelle für HSSFRow- und XSSFRow-Klassen)
Row row3 = sheet3.createRow(0);
/*Leitungsspezifikation weggelassen*/
Row row4 = sheet4.createRow(0);
/*Leitungsspezifikation weggelassen*/
python
/**
*Zelle erstellen, Zelle angeben, Wert in Zelle setzen
*/
// HSSF (Die Zellennummer beginnt bei 0)
HSSFCell cell1 = row1.getCell(0);
//Zellspezifikation(Die Zellennummer beginnt bei 0)
cell1 = row1.getCell(0);
//Wert in Zelle einstellen(Zeichenkette setzen)
/*
*Datentypen, die in Zellen festgelegt werden können
*Boolescher Typ: setCellValue(boolean value)
*Zeichenfolgentyp: setCellValue(java.lang.String value)
*RichTextString-Typ: setCellValue(RichTextString value)
*Kalendertyp: setCellValue(java.util.Calendar value)
*Datumstyp: setCellValue(java.util.Date value)
*Doppeltyp: setCellValue(double value)
*/
cell1.setCellValue("Test 1");
// XSSF (Die Zellennummer beginnt bei 0)
XSSFCell cell2 = row2.getCell(0);
/*Das Angeben von Zellen und das Festlegen von Zellenwerten entfällt.*/
// Cell (Gemeinsame Schnittstelle für HSSFCell-Klasse und XSSFCell-Klasse)
Cell cell3 = row3.getCell(0);
/*Das Angeben von Zellen und das Festlegen von Zellenwerten entfällt.*/
Cell cell4 = row4.getCell(0);
/*Das Angeben von Zellen und das Festlegen von Zellenwerten entfällt.*/
python
/**
*Erstellen Sie einen Zellenstil, geben Sie den Zellenstil an und legen Sie den Wert für den Zellenstil fest
*/
// HSSF
HSSFCellStyle cellstyle1 = workbook1.createCellStyle();
//Legen Sie einen Wert für den Zellenstil fest(Schriftart)
Font font = workbook1.createFont();
font.setFontName("MS Gothic");
font.setColor(IndexedColors.RED.getIndex());
font.setFontHeightInPoints((short)14);
cellstyle1.setFont(font);
//Spezifikation des Zellstils
cell1.setCellStyle(cellstyle1);
// XSSF
XSSFCellStyle cellstyle2 = workbook2.createCellStyle();
/*Das Festlegen des Zellenstils und das Festlegen des Werts des Zellenstils entfallen.*/
// CellStyle (Gemeinsame Schnittstelle für die HSSFCellStyle-Klasse und die XSSFCellStyle-Klasse)
CellStyle cellstyle3 = workbook3.createCellStyle();
/*Das Festlegen des Zellenstils und das Festlegen des Werts des Zellenstils entfallen.*/
CellStyle cellstyle4 = workbook4.createCellStyle();
/*Das Festlegen des Zellenstils und das Festlegen des Werts des Zellenstils entfallen.*/
Da der Zellenstil groß ist, beziehen Sie sich auf die unten stehende URL. URL : https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/CellStyle.html
python
/**
*Ausgabe einer Excel-Datei
*/
//Ausgabedateieinstellungen
FileOutputStream outExcelFile = null;
String outputPath = "Dateipfad, den Sie ausgeben möchten";
String fileName = "test.xlsx";
try{
//Ausgabedatei
outExcelFile = new FileOutputStream(outputPath + fileName);
workbook1.write(outExcelFile);
}catch(Exception e){
System.out.println(e.toString());
}finally{
try {
outExcelFile.close();
}catch(Exception e){
System.out.println(e.toString());
}
}
Dieses Mal habe ich versucht, "Neunundneunzig Tabelle" in Excel auszugeben. Ich möchte es nur in Excel anzeigen, also habe ich es ziemlich gewaltsam gemacht. Bitte beachten Sie.
python
package apache_poi.kuku;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
*Geben Sie die Tabelle mit neunundneunzig in eine Excel-Datei aus
* @author s-tsuchida
*
*/
public class Kuku_Poi {
public static void main(String[] args) {
//Arbeitsmappe
XSSFWorkbook workBook = null;
//Blatt
XSSFSheet sheet = null;
//Ausgabedatei
FileOutputStream outPutFile = null;
//Pfad der Ausgabedatei
String outPutFilePath = null;
//Name der Ausgabedatei
String outPutFileName = null;
//Erstellen einer Excel-Datei
try {
//Arbeitsmappe erstellen
workBook = new XSSFWorkbook();
//Blatteinstellungen
sheet = workBook.createSheet();
workBook.setSheetName(0, "Neunundneunzig Tisch");
sheet = workBook.getSheet("Neunundneunzig Tisch");
//Erstellen Sie die erste Zeile
XSSFRow row = sheet.createRow(2);
//Einstellungen für den Zellenstil "Titel"
XSSFCellStyle titleCellStyle = workBook.createCellStyle();
XSSFCell cell = row.createCell(7);
XSSFFont titleFont = workBook.createFont();
titleFont.setFontName("MS Gothic");
titleFont.setFontHeightInPoints((short)36);
titleFont.setUnderline(XSSFFont.U_SINGLE);
titleCellStyle.setFont(titleFont);
cell.setCellStyle(titleCellStyle);
//Stellen Sie "Titel" in der Zelle ein
cell.setCellValue("Neunundneunzig Tisch");
//Einstellungen für den Zellenstil "Tabellenkopf"
XSSFCellStyle headerCellStyle = workBook.createCellStyle();
XSSFFont headerFont = workBook.createFont();
headerFont.setFontName("MS Gothic");
headerFont.setFontHeightInPoints((short)25);
headerCellStyle.setFont(headerFont);
headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerCellStyle.setAlignment(HorizontalAlignment.CENTER);
headerCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.index);
headerCellStyle.setBorderTop(BorderStyle.MEDIUM);
headerCellStyle.setBorderBottom(BorderStyle.MEDIUM);
headerCellStyle.setBorderRight(BorderStyle.MEDIUM);
headerCellStyle.setBorderLeft(BorderStyle.MEDIUM);
//Setze "Tabellenkopf" in Zelle
row = sheet.createRow(5);
//Seite
for(int i = 3 , j = 0; i < 13 ; i++, j++) {
cell = row.createCell(i);
cell.setCellStyle(headerCellStyle);
if(i == 3) {
cell.setCellValue("");
}else {
cell.setCellValue(j);
}
}
//Vertikal
for(int i = 6 , j = 1 ; i < 15 ; i++, j++) {
row = sheet.createRow(i);
cell = row.createCell(3);
cell.setCellStyle(headerCellStyle);
cell.setCellValue(j);
}
//Einstellung des Zellenstils von "Berechnungsergebnis"
XSSFCellStyle resultCellStyle = workBook.createCellStyle();
XSSFFont resultFont = workBook.createFont();
resultFont.setFontName("MS Gothic");
resultFont.setFontHeightInPoints((short)25);
resultCellStyle.setFont(resultFont);
resultCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
resultCellStyle.setAlignment(HorizontalAlignment.CENTER);
resultCellStyle.setFillForegroundColor(IndexedColors.WHITE.index);
resultCellStyle.setBorderTop(BorderStyle.MEDIUM);
resultCellStyle.setBorderBottom(BorderStyle.MEDIUM);
resultCellStyle.setBorderRight(BorderStyle.MEDIUM);
resultCellStyle.setBorderLeft(BorderStyle.MEDIUM);
//Setze "Tabellenkopf" in Zelle
double num1 = 0;
double num2 = 0;
double result = 0;
for(int i = 6 ; i < 15 ; i++) {
for(int j = 4 ; j < 13 ; j++) {
//Neunundneunzig Berechnungen
num1 = sheet.getRow(5).getCell(j).getNumericCellValue();
num2 = sheet.getRow(i).getCell(3).getNumericCellValue();
result = num1 * num2;
row = sheet.getRow(i);
cell = row.createCell(j);
cell.setCellStyle(resultCellStyle);
cell.setCellValue(result);
}
}
//Excel-Datei ausgeben
try {
//Holen Sie sich das aktuelle Datum
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
//Angeben des Dateipfads und des Dateinamens
outPutFilePath = "Dateipfad, den Sie ausgeben möchten";
outPutFileName = "kuku_" + dateFormat.format(date).toString() + ".xlsx";
//Excel-Datei ausgeben
outPutFile = new FileOutputStream(outPutFilePath + outPutFileName);
workBook.write(outPutFile);
System.out.println("「" + outPutFilePath + outPutFileName + "Wurde ausgegeben.");
}catch(IOException e) {
System.out.println(e.toString());
}
}catch(Exception e) {
System.out.println(e.toString());
}
}
}
Dieses Mal habe ich zum ersten Mal "Apache POI" verwendet. Ich hatte das Gefühl, dass die Operation einfacher und benutzerfreundlicher war als erwartet. Ich kann das Gefühl des Tappens nicht leugnen, also werde ich weiter lernen.
Recommended Posts