Apache POI: Java에서 Excel 파일 생성, 읽기 및 편집

일반적으로 스프레드시트는 재무 및 회계 분야에서 송장 계산 및 생성, 보고서 관리 등을 용이하게 하기 위해 많이 사용됩니다. 애플리케이션의 일부에 생성, 읽기 또는 쓰기와 같은 작업이 필요한 경우 여러 API를 사용할 수 있으며 가장 강력한 API는 APACHE의 API POI입니다.

POI API는 Word 및 PowerPoint 문서도 처리하므로 시간이 지남에 따라 사용자는 더 많은 확신을 갖게 되었습니다.

Download

다음에서 API를 다운로드할 수 있습니다. 페이지 APACHE POI. 다운로드 후 다음 .jar 가져옵니다. 프로젝트에서:
  • poi
  • poi-ooxml
  • poi-ooxml-schemas
  • xmlbeans

Authoring and writing to an xls

Excel 파일을 처리하는 두 가지 주요 클래스는 다음과 같습니다.

HSSFWorkbook: 확장자 xls.
XSSFWorkbook: 확장자가 xlsx.

다음 코드는 다른 유형의 값을 가진 배열을 만듭니다.

import java.io.FileNotFoundException; 
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel {
public static void main(String[] args) {

//1. 빈 문서 만들기
XSSFWorkbook wb = new XSSFWorkbook();
//2입니다. 빈 스프레드시트 만들기
Sheet = wb.createSheet("new sheet");
//3입니다. 행을 만들고 그 안에 뭔가를 넣는다
행 행 = sheet.createRow((short)0);
//4입니다. 새 셀 만들기
셀 cell = row.createCell(0);
//5입니다. 값 설정
cell.setCellValue(1.2);

//다른 유형의 셀 추가
/*int*/row.createCell(1).setCellValue(3);
/*char*/row.createCell(2).setCellValue('c');
/*문자열*/row.createCell(3).setCellValue("문자열");
/*부울*/row.createCell(4).setCellValue(false);

FileOutputStream 파일 출력;
시도 {
fileOut = new FileOutputStream("nouveauFichier.xlsx");
wb.write(파일 출력);
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache poi로 Excel에 쓰기


현재 날짜와 시간을 삽입하려면 날짜 형식이 다음과 같이 생성됩니다.

//셀 F1cell = row.createCell((짧은) 6); 
cell.setCellValue(새 날짜());
XSSFCellStyle cellStyle = wb.createCellStyle();
XSSFDataFormat xssfDataFormat = wb.createDataFormat();
//날짜 및 시간 형식 만들기
cellStyle.setDataFormat(xssfDataFormat.getFormat("dd/mm/yyyy h:mm"));
cell.setCellStyle(셀 스타일);
엑셀 아파치 poi 삽입 날짜

텍스트 서식

텍스트 서식에는 글꼴, 크기 등이 포함됩니다. 기울임꼴/굵게/밑줄, 색상, 배경 및 정렬.

셀에 적용할 정렬의 예 날짜:

//line height
row.setHeightInPoints(20);
//수평 정렬
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
//세로 정렬
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_TOP);
Apache POI 행 및 열 정렬 Excel

글꼴 변경

/*새 글꼴 만들기*/
글꼴 글꼴 = wb.createFont();
//크기: 12px
font.setFontHeightInPoints((짧은)12);
font.setFontName("새 택배");
font.setItalic(참);
font.setBold (참);

/*새 스타일 만들기*/
CellStyle cs = wb.createCellStyle();
cs.setFont(글꼴);
//스타일 셀 3(D1)
row.getCell(3).setCellStyle(cs);
아파치 poi 엑셀 글꼴 변경

색상 및 배경

/*배경색 변경*/
XSSFCellStyle csColor=wb.createCellStyle();
csColor.setFillForegroundColor(new XSSFColor(new Color(194, 154, 250)));
csColor.setFillPattern(csCouleur.SOLID_FOREGROUND);
//셀 3에 스타일 적용
row.getCell(2).setCellStyle(csColor);

/*글꼴 색상 변경*/
글꼴 글꼴 = wb.createFont();
font.setColor((짧은)45);
CellStyle csCF = wb.createCellStyle();
csCF.setFont(글꼴);
//셀 0row.getCell(0).setCellStyle(csCF);
Apache POI 글꼴 색상 및 배경 변경 Excel

셀 병합

이 예에서는 4개의 셀을 가로 및 세로로 병합하고 가운데에 맞춥니다. B2, C2, B3, C3을 addMergedRegion  병합 할 셀의 범위를 매개 변수로 사용합니다.

import java.io.FileNotFoundException; 
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook을 사용합니다.
import org.apache.poi.ss.util.CellRangeAddress를 사용합니다.

public class Fusion{

public static void main(String[] args) throws FileNotFoundException {
Workbook wb = new HSSFWorkbook();
시트 시트 = wb.createSheet("sheet1");

행 행 = sheet.createRow((짧은) 1);
셀 셀 = row.createCell((짧은) 1);
cell.setCellValue("셀 병합 테스트");

sheet.addMergedRegion(new CellRangeAddress(
1, //첫 번째 행 B2
2, //마지막 행 B3
1, //첫 번째 열 C2
2 //마지막 열 C3
));
/*중심*/
cell.getCellStyle().setAlignment((짧은)2);
cell.getCellStyle().setVerticalAlignment((짧은)1);

FileOutputStream fs = null;
try {
fs = new FileOutputStream("testFusion.xlsx");
wb.write(fs);
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
아파치 포이 융합 셀 엑셀

수식 사용

Excel은 주로 결과 셀에서 복잡한 수식을 계산하고 사용하는 데 사용됩니다. Apache poi는 수식으로 셀을 추가하고 테스트하는 매우 효율적인 방법을 제공합니다.

다음 코드는 4학기의 평균에 대한 간단한 계산을 다룹니다. 공식은 (A2+B2+C2+D2)/4.

import java.io.File; 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel_formule {

public static void main(String[] args) {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet 시트 = wb.createSheet("평균");

행 행 = sheet.createRow((짧은) 0);
row.createCell(0).setCellValue("분기1");
row.createCell(1).setCellValue("분기2");
row.createCell(2).setCellValue("Quarter3");
row.createCell(3).setCellValue("분기4");
row.createCell(4).setCellValue("평균");

행 행1 = sheet.createRow((짧은) 1);
row1.createCell(0).setCellValue(2);
row1.createCell(1).setCellValue(5);
row1.createCell(2).setCellValue(1);
row1.createCell(3).setCellValue(7);
row1.createCell(4).setCellFormula("(A2+B2+C2+D2)/4");

try {
FileOutputStream out = new FileOutputStream(새 파일("formuletest.xlsx"));
wb.write(출력);
out.close();
System.out.println("엑셀 파일이 성공적으로 생성되었습니다.");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
수식이 있는 Excel 아파치 poi 미적분학

셀 평가 및 찾아보기

셀의 값을 표시하려면 해당 유형을 알아야 합니다. Apache poi는 클래스  FormulaEvaluator.evaluateFormulaCell를 사용하여 수식이 있는지 확인합니다. 그렇다면 평가하고 수식의 유형을 반환합니다.

import java.io.File; 
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.FormulaEvaluator를 사용합니다.
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Excel_parcourir {

public static void main(String[] args) throws IOException {
FileInputStream file = new FileInputStream(new File("formuletest.xlsx"));
//xlsx 파일을 참조하는 통합 문서 인스턴스 만들기
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet 시트 = wb.getSheetAt(0);

FormulaEvaluator formulaEvaluator =
wb.getCreationHelper().createFormulaEvaluator();

for (행 행: 시트) {//행 찾아보기
for (셀 셀: 행) {//열 찾아보기
//셀 유형 평가
스위치 (formulaEvaluator.evaluateInCell(cell).getCellType())
{
box Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + "\t\t");
부동산;
상자 Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + "\t");
부동산;
}
}
System.out.println();

}
}
Output

분기1 분기2 분기3분기 분기4 평균 
2.0 5.0 1.0 7.0 3.75