#37 java: resume - controller
This commit is contained in:
BIN
java/api/lego.jpeg
Normal file
BIN
java/api/lego.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
148
java/api/src/main/java/kr/excel/resume/ResumeController.java
Normal file
148
java/api/src/main/java/kr/excel/resume/ResumeController.java
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
package kr.excel.resume;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.*;
|
||||||
|
import org.apache.poi.xssf.usermodel.*;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ResumeController {
|
||||||
|
|
||||||
|
private final ResumeView view;
|
||||||
|
private final Workbook workbook;
|
||||||
|
|
||||||
|
public ResumeController() {
|
||||||
|
this.view = new ResumeView();
|
||||||
|
this.workbook = new XSSFWorkbook();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ResumeController controller = new ResumeController();
|
||||||
|
controller.createResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createResume() {
|
||||||
|
PersonInfo personInfo = view.inputPersonInfo();
|
||||||
|
List<Education> educationList = view.inputEducationList();
|
||||||
|
List<Career> careerList = view.inputCareerList();
|
||||||
|
String selfIntroduction = view.inputSelfIntroduction();
|
||||||
|
|
||||||
|
createResumeSheet(personInfo, educationList, careerList);
|
||||||
|
createSelfIntroductionSheet(selfIntroduction);
|
||||||
|
|
||||||
|
saveWorkbookToFile();
|
||||||
|
|
||||||
|
System.out.println("이력서 생성이 완료되었습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createResumeSheet(PersonInfo personInfo, List<Education> educationList, List<Career> careerList) {
|
||||||
|
Sheet sheet = workbook.createSheet("이력서");
|
||||||
|
|
||||||
|
Row headerRow = sheet.createRow(0);
|
||||||
|
headerRow.createCell(0).setCellValue("사진");
|
||||||
|
headerRow.createCell(1).setCellValue("이름");
|
||||||
|
headerRow.createCell(2).setCellValue("이메일");
|
||||||
|
headerRow.createCell(3).setCellValue("주소");
|
||||||
|
headerRow.createCell(4).setCellValue("전화번호");
|
||||||
|
headerRow.createCell(5).setCellValue("생년월일");
|
||||||
|
|
||||||
|
Row dataRow = sheet.createRow(1);
|
||||||
|
String photoFilename = personInfo.getPhoto();
|
||||||
|
|
||||||
|
try (InputStream photoStream = new FileInputStream(photoFilename)) {
|
||||||
|
|
||||||
|
BufferedImage originImage = ImageIO.read(photoStream);
|
||||||
|
|
||||||
|
int newWidth = (int) (35 * 2.83465);
|
||||||
|
int newHeight = (int) (45 * 2.83465);
|
||||||
|
Image resizedImage = originImage.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
|
||||||
|
BufferedImage resizedBufferedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_4BYTE_ABGR);
|
||||||
|
Graphics2D g2d = resizedBufferedImage.createGraphics();
|
||||||
|
g2d.drawImage(resizedImage, 0, 0, null);
|
||||||
|
g2d.dispose();
|
||||||
|
|
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream();
|
||||||
|
ImageIO.write(resizedBufferedImage, "png", os);
|
||||||
|
byte[] imageBytes = os.toByteArray();
|
||||||
|
int imageIndex = workbook.addPicture(imageBytes, Workbook.PICTURE_TYPE_PNG);
|
||||||
|
|
||||||
|
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
|
||||||
|
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 0, 1, 1, 2);
|
||||||
|
drawing.createPicture(anchor, imageIndex);
|
||||||
|
|
||||||
|
dataRow.setHeightInPoints(newHeight * 72 / 96);
|
||||||
|
|
||||||
|
int columnWidth = (int) Math.floor(((float) newWidth / (float) 8) * 256);
|
||||||
|
sheet.setColumnWidth(0, columnWidth);
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
dataRow.createCell(1).setCellValue(personInfo.getName());
|
||||||
|
dataRow.createCell(2).setCellValue(personInfo.getEmail());
|
||||||
|
dataRow.createCell(3).setCellValue(personInfo.getAddress());
|
||||||
|
dataRow.createCell(4).setCellValue(personInfo.getPhoneNumber());
|
||||||
|
dataRow.createCell(5).setCellValue(personInfo.getBirthDate());
|
||||||
|
|
||||||
|
int educationStartRow = 3;
|
||||||
|
Row educationHeaderRow = sheet.createRow(educationStartRow - 1);
|
||||||
|
educationHeaderRow.createCell(0).setCellValue("졸업년도");
|
||||||
|
educationHeaderRow.createCell(1).setCellValue("학교명");
|
||||||
|
educationHeaderRow.createCell(2).setCellValue("전공");
|
||||||
|
educationHeaderRow.createCell(3).setCellValue("졸업여부");
|
||||||
|
|
||||||
|
int educationRowNum = educationStartRow;
|
||||||
|
for (Education education : educationList) {
|
||||||
|
Row educationDataRow = sheet.createRow(educationRowNum++);
|
||||||
|
educationDataRow.createCell(0).setCellValue(education.getGraduationYear());
|
||||||
|
educationDataRow.createCell(1).setCellValue(education.getSchoolName());
|
||||||
|
educationDataRow.createCell(2).setCellValue(education.getMajor());
|
||||||
|
educationDataRow.createCell(3).setCellValue(education.getGraduationStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
int careerStartRow = educationRowNum + 1;
|
||||||
|
Row careerHeaderRow = sheet.createRow(careerStartRow - 1);
|
||||||
|
careerHeaderRow.createCell(0).setCellValue("근무기간");
|
||||||
|
careerHeaderRow.createCell(1).setCellValue("근무처");
|
||||||
|
careerHeaderRow.createCell(2).setCellValue("담당업무");
|
||||||
|
careerHeaderRow.createCell(3).setCellValue("근속연수");
|
||||||
|
|
||||||
|
int careerRowNum = careerStartRow;
|
||||||
|
for (Career career : careerList) {
|
||||||
|
Row careerDataRow = sheet.createRow(careerRowNum++);
|
||||||
|
careerDataRow.createCell(0).setCellValue(career.getWorkPeriod());
|
||||||
|
careerDataRow.createCell(1).setCellValue(career.getCompanyName());
|
||||||
|
careerDataRow.createCell(2).setCellValue(career.getJobTitle());
|
||||||
|
careerDataRow.createCell(3).setCellValue(career.getEmploymentYears());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createSelfIntroductionSheet(String selfIntroduction) {
|
||||||
|
Sheet sheet = workbook.createSheet("자기소개서");
|
||||||
|
|
||||||
|
Row dataRow = sheet.createRow(0);
|
||||||
|
Cell selfIntroductionCell = dataRow.createCell(0);
|
||||||
|
selfIntroductionCell.setCellStyle(getWrapCellStyle());
|
||||||
|
selfIntroductionCell.setCellValue(
|
||||||
|
new XSSFRichTextString(selfIntroduction.replaceAll("\n", String.valueOf((char) 10)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private XSSFCellStyle getWrapCellStyle() {
|
||||||
|
XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
|
||||||
|
style.setWrapText(true);
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveWorkbookToFile() {
|
||||||
|
try (FileOutputStream fo = new FileOutputStream("이력서.xlsx")) {
|
||||||
|
workbook.write(fo);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
java/api/이력서.xlsx
Normal file
BIN
java/api/이력서.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user