Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- C
- Java
- error
- GitHub
- RaspberryPi
- Spring
- CPP
- Vane
- ruby2d
- IntelliJ
- kotlin
- Android
- maven
- Shell
- gradle
- boj
- 루비
- OTLanguage
- ruby
- JS
- jetbrains
- Godot
- 개발노트
- Python
- react
- OAuth
- Baekjoon
- rubymine
- gnuplot
- plugin
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[Vane] Java 엑셀, csv 변환 라이브러리 xrm (ver 1.1.0) 본문
Xlsx(Xls) Relational Mapping (xrm)은 엑셀, CSV 파일을 Java클래스 타입으로 변환해 주는 라이브러리입니다.
https://github.com/VaneProject/xrm
maven
<dependency>
<groupId>io.github.vaneproject</groupId>
<artifactId>xrm</artifactId>
<version>1.1.0</version>
</dependency>
gradle
implementation 'io.github.vaneproject:xrm:1.1.0'
gradle.kts
implementation("io.github.vaneproject:xrm:1.1.0")
어노테이션
@XrmSheet
엑셀의 시트 상태를 정의하는 어노테이션으로 클래스의 최상위에 사용합니다.
- value (String) : 시트 이름을 지정하는 값으로 기본값으로 클래스명이 지정됩니다.
- header (int) : 머리말의 행을 지정하는 값으로 기본값으로는 첫번째 행인 1이 지정됩니다.
- data (int) : 데이터의 행을 지정하는 값으로 기본값으로 두번째 행인 2가 지정됩니다.
@Xrm
각 열의 상태를 지정하는 어노테이션으로 각 필드 (변수)에 지정하여 사용합니다.
- value (String) : 해당 값과 머리말에 일치할 경우 값이 저장되며 기본값으로 변수명이 지정됩니다.
사용예시
@XrmSheet(value = "sheet1", header = 2, data = 3)
public class XrmTest {
@Xrm("count")
private int number;
@Xrm
private String name;
@Xrm
private String gender;
}
@CsvSheet
csv타입의 파일을 상태를 정의할때 사용하는 어노테이션으로 클래스의 최상단에 사용됩니다.
- seq (String) : csv파일의 구분자를 지정하는 값으로 기본값으로 콤마(,)가 지정됩니다.
@Csv
각 열의 상태를 지정하는 어노테이션으로 각 필드(변수)에 지정하여 사용합니다.
- value (String) : 해당 값과 머리말이 일치할 경우 값이 부여되며 기본값으로 변수명이 지정됩니다.
- format (Class) : 지원하지 않는 타입을 사용할 경우 XrmFormat을 상속한 클래스를 등록하여 포맷을 지정할 수 있습니다.
사용예시
@CsvSheet
public class CsvTest {
@Csv("count")
private int number;
@Csv
private String name;
@Csv
private String gender;
@Csv(format = LocalDateTimeFormat.class)
private LocalDateTime date;
public void print() {
System.out.printf("count: %d, name: %s, gender: %s, date: %s%n", number, name, gender, date);
}
}
XrmFormat 사용법
XrmFormat<변환할 클래스> 형태로 지정됩니다.
셀에 존재하는 String타입의 값의 파라미터를 이용하여 변환할 타입을 return하여 만들 수 있습니다.
LocalDateTime으로 변환하는 코드는 다음과 같습니다.
import java.time.LocalDateTime;
public class LocalDateTimeFormat extends XrmFormat<LocalDateTime> {
@Override
public LocalDateTime format(String s) {
return LocalDateTime.parse(s);
}
}
파일 읽기 예제
XlsxRead
@XrmSheet(value = "sheet1", header = 2)
public class XlsxExample1 {
@Xrm
private int number;
@Xrm
private String name;
@Xrm
private String gender;
public void print() {
System.out.printf("number: %d, name: %s, gender: %s%n", number, name, gender);
}
}
XlsxRead<XlsxExample1> read = new XlsxRead<>(XlsxExample1.class, /* 파일 경로 */);
System.out.println("Print all");
List<XlsxExample1> all = read.getAll();
for (XlsxExample1 example : all)
example.print();
System.out.println("Print one");
XlsxExample1 example1 = read.get(0);
example1.print();
출력
Print all
number: 1, name: name1, gender: male
number: 2, name: name2, gender: female
number: 3, name: name3, gender: male
Print one
number: 1, name: name1, gender: male
CsvRead
@CsvSheet
public class CsvExample3 {
@Csv("count")
private int number;
@Csv
private String name;
@Csv
private String gender;
@Csv(format = LocalDateTimeFormat.class)
private LocalDateTime date;
public void print() {
System.out.printf("count: %d, name: %s, gender: %s, date: %s%n", number, name, gender, date);
}
}
CsvRead<CsvExample3> read = new CsvRead<>(CsvExample3.class, /* 경로 */);
System.out.println("Print all");
List<CsvExample3> all = read.getAll();
for (CsvExample3 example : all)
example.print();
System.out.println("Print one");
CsvExample3 example1 = read.get(0);
example1.print();
출력
Print all
count: 1, name: name1, gender: male, date: 2024-01-01T12:00
count: 2, name: name2, gender: female, date: 2024-01-02T11:00
count: 3, name: name3, gender: male, date: 2024-01-03T10:00
Print one
count: 1, name: name1, gender: male, date: 2024-01-01T12:00
'VaneProject > maven' 카테고리의 다른 글
[Vane] xrm라이브러리 1.0.2 (엑셀 파일 오브젝트화 시키기) (0) | 2024.02.11 |
---|---|
[Java] HangulEditor 라이브러리 (뷁어, 영어발음, 한글 자모음 분리 등) (2) | 2024.02.04 |
[Java] BadWordFiltering 3 (라이브러리 배포 안내) (2) | 2023.09.07 |