안녕하세요?
원인은 나중에 알아보는 것도 나쁘지 않을 것 같습니다.
Spread 기능은 그레이프시티에서 제일 잘 아니까
답변도 기다려 보시고요
매번 답변하면서 느끼는 거지만 실행 환경과 버전, 진행 과정등을 모르니
구체적인 정답을 제시하기 어려워 보입니다.
그러나 정답을 제시하지 못할 지라도 그 과정을 짐작하면서 따라 해보면 배우는 게 많아서
전 답변을 하고자 노력합니다. 말 그대로 토론이니까요.
항상 그렇지만.... 일단은 돌아가는 게 중요하니....
제 성격 상 기본 제공되는 메서드로 처리가 안되면 한참 돌아가더라도 다른 방법으로 처리해 버립니다.
(원인을 알 때까지. 그리고 프로그래밍은 정답이 없지 않습니까?)
뒷 단에서 처리가 안되면 그 앞에서 처리하면 그만입니다.(ㅎㅎㅎ)
저는 SQLite(WPF 플랫폼)를 가지고 테스트 했습니다.
다른 DB는 지원되는 함수가 다르니 그에 맞게 처리하면 되겠지요.
1.현상 또는 환경(질문자님의 환경과 다를 수 있습니다. 정보가 없으니 똑같은 환경은 만들지 못했습니다)
1) SQLite는 날짜 형식이 없으므로 Text 형식으로 '20210225' 8자리로 저장함.
CREATE TABLE userTbl (id Integer Not Null Primary Key Autoincrement,userName Text,userEmail Text,regDate Text)
아마도 질문자님도 날짜 형식이 아닌 Text 형식으로 해 놓았을 것 같습니다.
2) Spread에서는 CustomMode로 출력
GcSpreadSheet1.Sheets[0].Columns[3].Formatter = new GrapeCity.Windows.SpreadSheet.Data.GeneralFormatter(GrapeCity.Windows.SpreadSheet.Data.FormatMode.CustomMode, "####-##-##");
2.해결 방안 (컬럼명: regDate)
date(substr(regDate, 1, 4) || '-' || substr(regDate, 5, 2) || '-' || substr(regDate, 7, 2)) as regDate
- 함수를 이용하여 Convert
String sql = "SELECT id,userName,userEmail,date(substr(regDate, 1, 4) || '-' || substr(regDate, 5, 2) || '-' || substr(regDate, 7, 2)) as regDate FROM userTbl Order by id Desc;";
[Spread Sheet에 출력한 화면, Convert 후]
[Excel로 내보기 한 화면]
3.추정 원인
스프레드에서 CustomMode로 표현하면 2021-02-25로 보여지나 셀을 더블 클릭하여 보면 원래 값을 가지고 있는 것을 볼 수 있었음(변환하지 않은 상태에서는 2021-02-26이 아니라 20210225로 보여짐)
원래의 값이 그대로 Export 되는 것으로 추정함.
(ExcelSaveFlags를 이리저리 다 바꾸어 봐도 원래의 값 그대로 Export 되었음)
GcSpreadSheet1.SaveExcel(dlg.FileName, GrapeCity.Windows.SpreadSheet.Data.ExcelFileFormat.XLSX, GrapeCity.Windows.SpreadSheet.Data.ExcelSaveFlags.SaveAsViewed);