Je sortirai de ce que j'ai appris au quotidien dans l'entreprise. Cette fois, nous allons créer un fichier Excel (.xlsx) en utilisant "Apache POI".
 À partir d'applications Java telles que "Excel" et "Word"
 API pour la lecture et l'écriture de fichiers de format de produits Microsoft.
Préparez la bibliothèque à partir de l'URL suivante. Cette fois, nous utiliserons la dernière version de "poi-bin-3.17-20170915". (En décembre 2017)
Il existe deux formats pour ces classes, "HSSF" et "XSSF".
Il fait référence au format de fichier Excel.
| type | format de fichier | 
|---|---|
| HSSF | Format de fichier jusqu'à Excel 2003 | 
| XSSF | Format de fichier au format OOXML dans Excel 2007 | 
python
/**
 *Créer un classeur
*/
// HSSF
HSSFWorkbook workbook1 = new HSSFWorkbook();
// XSSF
XSSFWorkbook workbook2 = new XSSFWorkbook();
// Workbook (Interface commune pour la classe HSSFWorkbook et la classe XSSFWorkbook)
Workbook workbook3 = new HSSFWorkbook();
Workbook workbook4 = new XSSFWorkbook();
python
/**
  *Créer une feuille, spécifier une feuille
*/
// HSSF
HSSFSheet sheet1 = workbook1.createSheet();
//Désignation par nom de feuille
sheet1 = workbook1.getSheet("Feuille 1");
//Désigné par index(Les numéros de feuille commencent à 0)
sheet1 = workbook1.getSheetAt(0);
	    
// XSSF
XSSFSheet sheet2 = workbook2.createSheet();
/*Spécification de feuille omise*/
	    
// Sheet (Interface commune à la classe HSSFSheet et à la classe XSSFSheet)
Sheet sheet3 = workbook3.createSheet();
/*Spécification de feuille omise*/
Sheet sheet4 = workbook4.createSheet();
/*Spécification de feuille omise*/
python
/**
  *Créer une ligne, spécifier une ligne
*/
// HSSF (Les numéros de ligne commencent à 0)
HSSFRow row1 = sheet1.createRow(0);
	    
//Spécifier une ligne(Les numéros de ligne commencent à 0)
row1 = sheet1.getRow(0);
	    
// XSSF (Les numéros de ligne commencent à 0)
XSSFRow row2 = sheet2.createRow(0);
/*Spécification de ligne omise*/
	    
// Row (Interface commune aux classes HSSFRow et XSSFRow)
Row row3 = sheet3.createRow(0);
/*Spécification de ligne omise*/
	    
Row row4 = sheet4.createRow(0);
/*Spécification de ligne omise*/
python
/**
  *Créer une cellule, spécifier la cellule, définir la valeur dans la cellule
*/
// HSSF (Le numéro de cellule commence à 0)
HSSFCell cell1 = row1.getCell(0);
	    
//Spécification de la cellule(Le numéro de cellule commence à 0)
cell1 = row1.getCell(0);
	    
//Définir la valeur dans la cellule(Définir la chaîne de caractères)
/*
  *Types de données pouvant être définis dans des cellules
  *Type booléen: setCellValue(boolean value) 
  *Type de chaîne: setCellValue(java.lang.String value)
  *Type RichTextString: setCellValue(RichTextString value)
  *Type de calendrier: setCellValue(java.util.Calendar value)
  *Type de date: setCellValue(java.util.Date value)
  *Type double: setCellValue(double value) 
*/
cell1.setCellValue("Test 1");
	    
// XSSF (Le numéro de cellule commence à 0)
XSSFCell cell2 = row2.getCell(0);
/*La spécification des cellules et la définition des valeurs de cellule sont omises.*/
	    
// Cell (Interface commune à la classe HSSFCell et à la classe XSSFCell)
Cell cell3 = row3.getCell(0);
/*La spécification des cellules et la définition des valeurs de cellule sont omises.*/
	    
Cell cell4 = row4.getCell(0);
/*La spécification des cellules et la définition des valeurs de cellule sont omises.*/
python
/**
 *Créer un style de cellule, spécifier le style de cellule, définir la valeur du style de cellule
*/
// HSSF
HSSFCellStyle cellstyle1 = workbook1.createCellStyle();
	    
//Définir une valeur pour le style de cellule(Police de caractère)
Font font = workbook1.createFont();
font.setFontName("MS gothique");
font.setColor(IndexedColors.RED.getIndex());
font.setFontHeightInPoints((short)14);
cellstyle1.setFont(font);
	    
//Spécification du style de cellule
cell1.setCellStyle(cellstyle1);
	    
// XSSF
XSSFCellStyle cellstyle2 = workbook2.createCellStyle();
/*La spécification du style de cellule et la définition de la valeur du style de cellule sont omises.*/
	    
// CellStyle (Interface commune à la classe HSSFCellStyle et à la classe XSSFCellStyle)
CellStyle cellstyle3 = workbook3.createCellStyle();
/*La spécification du style de cellule et la définition de la valeur du style de cellule sont omises.*/
	    
CellStyle cellstyle4 = workbook4.createCellStyle();
/*La spécification du style de cellule et la définition de la valeur du style de cellule sont omises.*/
Le style de cellule étant volumineux, reportez-vous à l'URL ci-dessous. URL : https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/CellStyle.html
python
/**
 *Sortie de fichier Excel
*/
//Paramètres du fichier de sortie
FileOutputStream outExcelFile = null;	    
String outputPath = "Chemin du fichier que vous souhaitez générer";
String fileName = "test.xlsx";
try{
     //Fichier de sortie
     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());
     }
}
Cette fois, j'ai essayé de sortir "Ninety-nine Table" dans Excel. Je veux juste l'afficher dans Excel, donc je l'ai fait assez de force. Notez s'il vous plaît.
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;
/**
 *Exportez le tableau de quatre-vingt-dix-neuf dans un fichier Excel
 * @author s-tsuchida
 *
 */
public class Kuku_Poi {
	
	public static void main(String[] args) {
		
		//classeur
		XSSFWorkbook workBook = null;
		//Feuille
		XSSFSheet sheet = null;
		//Fichier de sortie
		FileOutputStream outPutFile = null;
		//Chemin du fichier de sortie
		String outPutFilePath = null;
		//Nom du fichier de sortie
		String outPutFileName = null;
		
		//Créer un fichier Excel
		try {
			
			//Créer un classeur
			workBook = new XSSFWorkbook();
			
			//Paramètres de la feuille
			sheet = workBook.createSheet();
			workBook.setSheetName(0, "Quatre-vingt-dix-neuf table");
			sheet = workBook.getSheet("Quatre-vingt-dix-neuf table");
			
			//Créer la ligne initiale
			XSSFRow row = sheet.createRow(2);
			
			//Paramètres de style de cellule "Titre"
			XSSFCellStyle titleCellStyle = workBook.createCellStyle();
			XSSFCell cell = row.createCell(7);
			XSSFFont titleFont = workBook.createFont();
			titleFont.setFontName("MS gothique");
			titleFont.setFontHeightInPoints((short)36);
			titleFont.setUnderline(XSSFFont.U_SINGLE);
			titleCellStyle.setFont(titleFont);
			cell.setCellStyle(titleCellStyle);
			
			//Définir "Titre" dans la cellule
			cell.setCellValue("Quatre-vingt-dix-neuf table");
			
			//Paramètres de style de cellule "En-tête de tableau"
			XSSFCellStyle headerCellStyle = workBook.createCellStyle();
			XSSFFont headerFont = workBook.createFont();
			headerFont.setFontName("MS gothique");
			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);
			
			//Définir "en-tête de tableau" dans la cellule
			row = sheet.createRow(5);
			//côté
			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);
				}
			}
			//Verticale
			for(int i = 6 , j = 1 ; i < 15 ; i++, j++) {
				row = sheet.createRow(i);
				cell = row.createCell(3);
				cell.setCellStyle(headerCellStyle);
				cell.setCellValue(j);
			}
			
			//Paramètre de style de cellule du "résultat du calcul"
			XSSFCellStyle resultCellStyle = workBook.createCellStyle();
			XSSFFont resultFont = workBook.createFont();
			resultFont.setFontName("MS gothique");
			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);
			
			//Définir "en-tête de tableau" dans la cellule
			double num1 = 0;
			double num2 = 0;
			double result = 0;
			for(int i = 6 ; i < 15 ; i++) {
				for(int j = 4 ; j < 13 ; j++) {
					//Quatre-vingt-dix-neuf calculs
					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);
				}
			}
			
			//Fichier Excel de sortie
			try {
				
				//Obtenez la date actuelle
				Date date = new Date();
				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
				
				//Spécification du chemin et du nom du fichier
				outPutFilePath = "Chemin du fichier que vous souhaitez générer";
				outPutFileName = "kuku_" + dateFormat.format(date).toString() +  ".xlsx";
				
				//Fichier Excel de sortie
				outPutFile = new FileOutputStream(outPutFilePath + outPutFileName);
				workBook.write(outPutFile);
				
				System.out.println("「" + outPutFilePath + outPutFileName + "A été sortie.");
				
			}catch(IOException e) {
				System.out.println(e.toString());
			}
			
		}catch(Exception e) {
			System.out.println(e.toString());
		}
	
	}
}
Cette fois, j'ai utilisé "Apache POI" pour la première fois, J'ai senti que l'opération était plus facile et plus facile à utiliser que ce à quoi je m'attendais. Je ne peux pas nier le sentiment de tâtons, alors je vais continuer à étudier.
Recommended Posts