재우니의 블로그

EPPlus 7 요약

1. 라이선스 변경 안내 (EPPlus 5 버전부터 적용)

  • EPPlus는 LGPL에서 Polyform Noncommercial 1.0.0 라이선스로 변경되었습니다.
  • 비상업적 사용은 여전히 무료이지만, 상업적 사용을 위해서는 상용 라이선스가 필요합니다.
  • 자세한 내용은 여기에서 확인할 수 있으며, 상용 라이선스는 EPPlus 공식 웹사이트에서 구매할 수 있습니다.
  • 소스 코드는 새로운 GitHub 저장소로 이동했습니다.

2. LicenseContext 파라미터 설정 필수

  • EPPlus는 라이선스를 설정하지 않으면 디버그 모드에서 LicenseException이 발생합니다.
  • 라이선스 설정은 아래와 같은 여러 방식으로 구성할 수 있습니다.
1) 코드에서 설정:
// 상업적 사용 시
ExcelPackage.LicenseContext = LicenseContext.Commercial;

// 비상업적 사용 시
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using (var package = new ExcelPackage(new FileInfo("MyWorkbook.xlsx")))
{
    // 엑셀 작업 수행
}
2) appSettings.json에서 설정:
{
    "EPPlus": {
        "ExcelPackage": {
            "LicenseContext": "Commercial"
        }
    }
}
3) Web.config 또는 App.config에서 설정:
<appSettings>
    <add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />
</appSettings>
4) 환경 변수(Environment Variable)로 설정:
  • 환경 변수 EPPlusLicenseContext를 사용해 설정할 수 있습니다.
  • 환경 변수는 사용자 또는 프로세스 수준에서 설정해야 합니다.
    • 예: Commercial 또는 NonCommercial로 설정

3. EPPlus 7 Preview 1의 새로운 기능

  • 배열 수식 지원을 위한 계산 엔진 업데이트
    • 레거시 및 동적 배열 수식 계산 지원
    • 교차 연산자(intersect operator) 지원
    • 암묵적 교차(Implicit intersection) 지원
    • 함수의 배열 매개변수 지원
    • 콜론 연산자(:)를 함수와 함께 사용할 때 더 나은 지원 제공
    • 21개의 새로운 함수 추가

4. 호환성 깨짐(Breaking Changes)

EPPlus 7에서는 수식 파서가 크게 변경되어 사용자 정의 함수ExcelFunction 클래스를 상속하는 경우 검토가 필요합니다. 새로운 프로퍼티와 메서드가 도입되었습니다.

  • 새로운 프로퍼티:
    • NamespacePrefix: 저장 시 접두사가 필요한 경우(예: "_xlfn.")
    • HasNormalArguments: 일반 인수를 사용하는지 여부를 나타내는 부울 값
    • ReturnsReference: 범위 참조를 반환할 수 있는지 여부
    • IsVolatile: 동일한 매개변수로 호출 시 다른 결과를 반환하는지 여부
    • ArrayBehaviour: 매개변수로 배열을 허용하고 배열 출력이 가능한지 여부
  • 새로운 메서드:
    • CreateAddressResult: 범위 참조 결과 반환
    • CreateDynamicArrayResult: 동적 배열로 결과 처리
    • GetArrayBehaviourConfig: 배열 매개변수를 설정
  • 토크나이저(Tokenization) 개선:
    • 주소를 더 정교하게 분석하도록 개선됨
    • 표현식 처리는 역폴란드 표기법을 사용해 재작성됨

5. 버전별 주요 변경 사항

  • EPPlus 6.1 변경 사항:
    • System.Drawing.Common에 대한 모든 참조가 제거됨
      자세한 정보
    • FontSize 클래스가 분리되어 폭과 높이를 개별적으로 관리
  • EPPlus 5.x 변경 사항:
    • .NET Framework의 Worksheet 컬렉션 기본 인덱스가 1에서 0으로 변경됨
    • 이미지 태그에서 twoCellAnchor 대신 oneCellAnchor가 사용됨

6. 문서화 개선


결론

EPPlus는 버전 5부터 Polyform Noncommercial 라이선스로 전환되어, 상업적 사용을 위해서는 라이선스를 구매해야 합니다. EPPlus 7에서는 배열 수식 지원 등 다양한 기능이 추가되었으며, 수식 파서와 토크나이저가 크게 변경되었습니다. 문서화와 샘플 프로젝트도 강화되어, 사용자 경험이 크게 향상되었습니다.