본문 바로가기

Spring3

[AWS RedShift] querydsl 레드시프트에서 나눗셈 때 소수점 표기 올바르게 하는 방법 2가지 레드시프트에서 나눗셈을 하면 정수로 떨어지거나 특정 자리에서 버림처리 해버리는 경우가 발생한다. 이유는, 나눗셈할 때 정수/정수 로 들어왔을 경우 나눗셈 결과가 정수로 떨어지기 때문이다. 해결 방법은 숫자를 분명하게 정수가 아니도록 만들어주는 것이다. 쿼리로 던질 경우는 소수점 처리를 하면 되지만 Querydsl 등에서 파라미터로 던질 때는 아래와 같이 한다. 아래와 같은 식으로 함수를 구성한다고 하면 분모와 분자를 던질 때 1.0을 곱해서 던진다. multiply를 Double형으로 던져도 원하는 결과는 나오지 않는다. public static NumberTemplate divideAndMultiplyAndRound(Integer scale, Integer multiply, Object... args).. 2023. 11. 7.
Poi 라이브러리에서 wrapText = true 지정하여 2줄 이상의 텍스트를 넣었는데 자동 줄바꿈만 되고 높이가 한 줄 높이 그대로인 경우 자동줄바꿈만 되고 높이가 한줄 높이 그대로인 경우가 있다. 그런 경우 아래처럼 옵션을 주면 자동으로 맞춰준다. currentRow.setHeight((short)-1) SXSSFWorkbook 기준으로 잘 동작하는 것을 확인하였다. 2023. 1. 13.
Poi Library 오류 : The maximum column width for an individual cell is 255 characters. 엑셀 다운로드를 구현하고 스타일을 적용하는 과정에서 아래 오류를 발견했다. The maximum column width for an individual cell is 255 characters. 원인은, Poi 라이브러리에서 지원하는 최대 가로 길이가 255 * 256이기 때문. 255는 글자수를 의미하고 256은 엑셀파일에서 보는 기준 한글자(영어 기준)의 가로 길이다. 즉, 영문 255자까지가 허용되는 컬럼 가로 길이다. 해결은 단순히 최대값의 제한을 걸면 되므로 Math.min(A,B) 로 제한을 걸면 된다. 참고로 한글은 256이 아니라 512로 하면 적절하게 맞는다. 즉 한글은 122자 정도 길이가 한계라고 보면 된다. 이렇게 가로 길이를 제한하고 난 뒤에는 CellStyle을 이용해 wrapT.. 2023. 1. 13.