[POI 3.17] 이름 정의 및 데이터 유효성 검사 추가(드롭다운 구현)
이름 정의 (엑셀: 수식 > 이름관리자)
HSSFWorkbook wb = new HSSFWorkbook();
//참조 sheet 생성
HSSFSheet sheet = workbook.createSheet("감면");
//참조 데이터 생성
...
//userName 이라는 이름 정의
String name = "userName";
HSSFName namedCell = wb.createName();
namedCell.setNameName(name);
namedCell.setRefersToFormula("감면!$A$11:$A$35"); //감면 sheet 해당 범위에 참조 데이터 존재
//또는
namedCell.setRefersToFormula("'감면'!$A$11:$A$35");
//이미 이름이 정의되어 있는 엑셀인 경우
FileInputStream file = new FileInputStream(new File("already.xlsx"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFName namedCell = wb.getName(name);
...
이름 적용
//String name = "userName";
HSSFSheet sheet = workbook.createSheet("Test");
...
//CellRangeAddressList(시작 row index, 종료 row index, 시작 column index, 종료 column index);
//범위 설정 (1 ~ 10행, B열)
CellRangeAddressList addressList = new CellRangeAddressList(0, 9, 1, 1);
//데이터 유효성 검사 추가(엑셀: 데이터 > 데이터 유효성 검사)
DVConstraint dvConstraint = DVConstraint.createFormulaListConstraint(name);
DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setEmptyCellAllowed(false); //공백무시
dataValidation.setShowPromptBox(false); //설명 미표시
dataValidation.setSuppressDropDownArrow(false); //셀 선택 시 드롭다운 목록 미표시
sheet.addValidationData(dataValidation);
출처
'Java' 카테고리의 다른 글
List 다중 컬럼 정렬 (0) | 2021.05.21 |
---|---|
날짜 관련 유틸리티 (0) | 2018.10.23 |
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
List 다중 컬럼 정렬
List 에 대하여 다중 컬럼 정렬을 하고자 할 때
//
export class Test {
String name;
Integer age;
Integer score;
}
List list = ...;
// 점수순으로 정렬
list.sort( (a, b) -> a.getScore().compareTo(b.getScore()) );
// 점수순, 나이순으로 정렬
Collections.sort(list, Comparator.comparing(Test::getScore)
.thenComparing(Test::getAge));
//
출처
https://stackoverflow.com/questions/4258700/collections-sort-with-multiple-fields
내림차순(역순) 정렬
public class TempDTO {
private Integer order;
private String name;
...
}
list.sort(Comparator.comparing(TempDTO::getOrder, Comparator.reverseOrder()));
'Java' 카테고리의 다른 글
[POI 3.17] 이름 정의 및 데이터 유효성 검사 추가(드롭다운 구현) (0) | 2021.11.05 |
---|---|
날짜 관련 유틸리티 (0) | 2018.10.23 |
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
날짜 관련 유틸리티
/** * 지정한 시간(min) 뒤의 시각 반환 * @param min * @return */ public static Date addMin(Integer min) { Calendar c = Calendar.getInstance(); c.add(Calendar.MINUTE, min); return c.getTime(); } /** * 오늘 23:59:59 시각 반환 * @return */ public static Date getTodayMidnight() { Calendar c = Calendar.getInstance(); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 23, 59, 59); return c.getTime(); }
'Java' 카테고리의 다른 글
[POI 3.17] 이름 정의 및 데이터 유효성 검사 추가(드롭다운 구현) (0) | 2021.11.05 |
---|---|
List 다중 컬럼 정렬 (0) | 2021.05.21 |
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
JDK 8 인스톨 없이 설치하기
윈도우 운영체제에 독립 이클립스 개발환경을 구축하려면 JDK를 인스톨해야 한다.
하지만 윈도우 운영체제에 JDK를 인스톨 없이 이용하고자 한다면 아래와 같이 해보자.
1. 오라클 사이트에서 윈도우용 JDK 8u191 버전을 다운로드 한다.
jdk-8u191-windows-x64.exe
2. 7zip 과 같은 압축 해제 유틸리티로 다운받은 파일을 설치하지 않고 압축을 해제한다.
3. ~/.rsrc/1033/JAVA_CAB10 폴더 안의 111 파일을 오른쪽 버튼을 눌러
'여기에 압축 풀기'를 선택하면 tools.zip 파일이 생긴다.
3.1. tools.zip 파일 압축을 풀어 폴더명을 jdk-8u191-x64 같이 바꿔준다.
3.2. 명령 프롬프트를 실행하여 압축을 푼 폴더로 가서 아래와 같은 명령을 실행한다.
for /r %i in (*.pack) do .\bin\unpack200.exe %i %~pi%~ni.jar
4. ~/.rsrc/1033/JAVA_CAB9 폴더 안의 110 파일을 오른쪽 버튼을 눌러
'여기에 압축 풀기'를 선택하면 src.zip 파일이 생긴다. 3.1.에서 만든 폴더에 넣어준다.
5. ~/.rsrc/1033/JAVA_CAB11 폴더 안의 112 파일을 오른쪽 버튼을 눌러
'여기에 압축 풀기'를 선택하면 COPYRIGHT 파일이 생긴다. 3.1.에서 만든 폴더에 넣어준다.
6. 이 폴더를 이클립스 환경설정에서 사용하면 된다.
'Java' 카테고리의 다른 글
List 다중 컬럼 정렬 (0) | 2021.05.21 |
---|---|
날짜 관련 유틸리티 (0) | 2018.10.23 |
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
사진 이미지 크기 변경 후 Base64 문자열 변환
이미지 크기 조절
/** * 사진 이미지 크기 조절 * @param img * @param width * @param height * @return */ private BufferedImage resizeImage(BufferedImage img, int width, int height) { //int type = img.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : img.getType(); //png = TYPE_INT_ARGB Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH); BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //jpeg = TYPE_INT_RGB Graphics2D g2d = resized.createGraphics(); g2d.drawImage(tmp, 0, 0, null); g2d.dispose(); return resized; }
사진 이미지 Base 64 문자열 변환
private String resizePhoto(String filePath, int MAX_SIZE) { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); //업로드 된 이미지(원본) 파일 읽기 File file = new File(filePath); BufferedImage orgImage = ImageIO.read(file); BufferedImage resizedImage = null; int imageWidth = orgImage.getWidth(); int imageHeight = orgImage.getHeight(); //가로가 긴 이미지 if (imageWidth > imageHeight) { if (imageWidth > MAX_SIZE) { double height = (double)imageHeight / (double)imageWidth * (double)MAX_SIZE; //가로 크기 = MAX_SIZE, 세로 크기 = height resizedImage = resizeImage(orgImage, MAX_SIZE, (int)height); } //세로가 긴 이미지 } else { if (imageHeight > MAX_SIZE) { double width = (double)imageWidth / (double)imageHeight * (double)MAX_SIZE; //가로크기 = width, 세로 크기 = MAX_SIZE resizedImage = resizeImage(orgImage, (int)width, MAX_SIZE); } } //이미지 크기 변경 = resizedImage 아니면 원본 이미지 = orgImage ImageIO.write((resizedImage != null) ? resizedImage : orgImage, "jpeg", os); return Base64.getEncoder().encodeToString(os.toByteArray()); //base64 문자열 변환 } catch (FileNotFoundException ex) { System.out.println("▶▶▶ File not found in [resizePhoto] " + ex); } catch (IOException ex) { System.out.println("▶▶▶ Error in [resizePhoto] " + ex); } return null; }
'Java' 카테고리의 다른 글
날짜 관련 유틸리티 (0) | 2018.10.23 |
---|---|
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성 (0) | 2015.06.30 |
POI, Excel 셀 생성
POI, Excel 셀 생성
/** * 엑셀 셀을 생성한다. * 세로 맞춤 : 가운데 * @param row * @param nCell 생성할 셀 인덱스 * @param font 글꼴 * @param bgColor 배경색 * @param hAlign 가로 맞춤 * @param border 테두리 * @return */ private XSSFCell createCell(XSSFRow row, int nCell, Font font, XSSFColor bgColor, short hAlign, short border) { short vAlign = CellStyle.VERTICAL_CENTER; XSSFSheet sheet = row.getSheet(); XSSFWorkbook wb = sheet.getWorkbook(); XSSFCellStyle cs = wb.createCellStyle(); //정렬 설정 cs.setAlignment(hAlign); cs.setVerticalAlignment(vAlign); //테두리 설정 cs.setBorderTop(border); cs.setBorderRight(border); cs.setBorderBottom(border); cs.setBorderLeft(border); //글꼴 설정 cs.setFont(font); //배경색 설정 if (bgColor != null) { cs.setFillForegroundColor(bgColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); } //Cell 생성 XSSFCell cell = row.createCell(nCell); cell.setCellStyle(cs); return cell; }
'Java' 카테고리의 다른 글
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
---|---|
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성 (0) | 2015.06.30 |
POI, Excel 한 Cell에 여러 줄 표시 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성
POI, Excel 숫자 셀 생성
/** * 숫자 서식 셀을 생성한다. * 세로 맞춤 : 가운데 * 테두리 : 모두 * @param row * @param nCell 생성할 셀 인덱스 * @param font 글꼴 * @param bgColor 배경색 * @param hAlign 가로 맞춤 * @return */ private XSSFCell createNumericCell(XSSFRow row, int nCell, Font font, XSSFColor bgColor, short hAlign) { short vAlign = CellStyle.VERTICAL_CENTER; short border = CellStyle.BORDER_THIN; XSSFSheet sheet = row.getSheet(); XSSFWorkbook wb = sheet.getWorkbook(); XSSFCellStyle cs = wb.createCellStyle(); cs.setAlignment(hAlign); cs.setVerticalAlignment(vAlign); cs.setBorderTop(border); cs.setBorderRight(border); cs.setBorderBottom(border); cs.setBorderLeft(border); cs.setFont(font); //배경색 설정 if (bgColor != null) { cs.setFillForegroundColor(bgColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); } XSSFDataFormat df = (XSSFDataFormat) wb.createDataFormat(); cs.setDataFormat(df.getFormat("#,###")); XSSFCell cell = row.createCell(nCell); cell.setCellStyle(cs); return cell; }
'Java' 카테고리의 다른 글
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
---|---|
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성 (0) | 2015.06.30 |
POI, Excel 한 Cell에 여러 줄 표시 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성
POI 이용, Excel 병합 셀 생성
/** * 병합 셀을 생성한다. * 세로 맞춤 : 가운데 * 테두리 : 모두 * @param row * @param nStart 시작 셀 인덱스 * @param nEnd 종료 셀 인덱스 * @param font 글꼴 * @param bgColor 배경색 * @param hAlign 가로 맞춤 * @param border 테두리 * @return */ private XSSFCell createMergedCell(XSSFRow row, int nStart, int nEnd, Font font, XSSFColor bgColor, short hAlign, short border) { short vAlign = CellStyle.VERTICAL_CENTER; XSSFCell returnCell = null; XSSFSheet sheet = row.getSheet(); XSSFWorkbook wb = sheet.getWorkbook(); XSSFCellStyle cs = wb.createCellStyle(); //정렬 cs.setAlignment(hAlign); cs.setVerticalAlignment(vAlign); //테두리 설정 cs.setBorderTop(border); cs.setBorderRight(border); cs.setBorderBottom(border); cs.setBorderLeft(border); //글꼴 설정 cs.setFont(font); //배경색 설정 if (bgColor != null) { cs.setFillForegroundColor(bgColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); } //셀 생성 for (int i = nStart; i <= nEnd; i++) { XSSFCell cell = row.createCell(i); if (i == nStart) { returnCell = cell; } cell.setCellStyle(cs); } //병합 영역 설정 sheet.addMergedRegion(new CellRangeAddress(row.getRowNum(), row.getRowNum(), nStart, nEnd)); return returnCell; }
'Java' 카테고리의 다른 글
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
---|---|
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
POI, Excel 한 Cell에 여러 줄 표시 (0) | 2015.06.30 |
POI, Excel 한 Cell에 여러 줄 표시
POI 사용 Excel Cell 생성 및 한 Cell에 여러 줄 표시
private void createCell(XSSFRow row, int nCell, Font font, XSSFColor bgColor, String cellValue) { short hAlign = CellStyle.ALIGN_LEFT; short vAlign = CellStyle.VERTICAL_CENTER; short border = CellStyle.BORDER_THIN; XSSFSheet sheet = row.getSheet(); XSSFWorkbook wb = sheet.getWorkbook(); int nCount = 0; String[] remark = cellValue.split("\\|"); //분리자 | String description = ""; //줄 높이 계산 for (int k = 0; k < remark.length; k++) { if (remark[k].length() > 0) { if (nCount == 0) description += remark[k]; else description += "\r\n"+ remark[k]; nCount++; } } //줄 높이 설정 if (nCount > 1) row.setHeightInPoints((nCount * sheet.getDefaultRowHeightInPoints())); //스타일 설정 XSSFCellStyle cs = wb.createCellStyle(); cs.setFont(font); //배경색 설정 cs.setFillForegroundColor(bgColor); //주의: 반드시 ForegroundColor를 사용(BackgroundColor가 아님) cs.setFillPattern(CellStyle.SOLID_FOREGROUND); //정렬 설정 cs.setAlignment(hAlign); cs.setVerticalAlignment(vAlign); //테두리 설정 cs.setBorderTop(border); cs.setBorderRight(border); cs.setBorderBottom(border); cs.setBorderLeft(border); //여러 줄 표시할 경우 꼭 true cs.setWrapText(true); //Cell 생성 XSSFCell cell = row.createCell(nCell); cell.setCellStyle(cs); cell.setCellValue(new XSSFRichTextString(description)); sheet.autoSizeColumn(nCell); //너비를 자동으로 다시 설정 }
'Java' 카테고리의 다른 글
JDK 8 인스톨 없이 설치하기 (0) | 2018.10.20 |
---|---|
사진 이미지 크기 변경 후 Base64 문자열 변환 (0) | 2018.04.26 |
POI, Excel 셀 생성 (0) | 2015.06.30 |
POI, Excel 숫자 셀 생성 (0) | 2015.06.30 |
POI, Excel 병합 셀 생성 (0) | 2015.06.30 |