【.NET Core】【ClosedXML】셀 값 가져오기 2
6676 단어 csharpdotnetcoreclosedxml
소개
이번에는 Datetime 값을 가져오려고 합니다.
셀 값 가져오기
yyyy-MM-dd HH:mm:ss
실제 값
9/27/2020 11:40:30 PM
엑셀에 표시
2020/09/27 23:40:30
결과
Date(yyyy/MM/dd HH:mm:ss)_FormatString "2020/09/27 23:40:30"
Date(yyyy/MM/dd HH:mm:ss)_CachedValue "9/27/2020 11:40:30 PM"
Date(yyyy/MM/dd HH:mm:ss)_ValueCached ""
Date(yyyy/MM/dd HH:mm:ss)_DataType "DateTime"
Date(yyyy/MM/dd HH:mm:ss)_FormulaAi ""
좋은 :)
월/일
실제 값
9/22/2020
Excel에 표시
9/22
결과
Date(MM/dd)_FormatString "9/22"
Date(MM/dd)_CachedValue "9/22/2020 12:00:00 AM"
Date(MM/dd)_ValueCached ""
Date(MM/dd)_DataType "DateTime"
Date(MM/dd)_FormulaAi ""
yyyy年MM月dd日(일본어)
실제 값
9/22/2020
엑셀에 표시
2020年9月22日
결과
Date(JP)_FormatString "2020年9月22日"
Date(JP)_CachedValue "9/22/2020 12:00:00 AM"
Date(JP)_ValueCached ""
Date(JP)_DataType "DateTime"
Date(JP)_FormulaAi ""
엄청난!
일본 달력
실제 값
9/22/2020
Excel에 표시
令和2年9月22日
결과
JapaneseCalendar_FormatString "[$]ggge\"年\"m\"月\"d\"日\";@"
JapaneseCalendar_CachedValue "9/22/2020 12:00:00 AM"
JapaneseCalendar_ValueCached ""
JapaneseCalendar_DataType "DateTime"
JapaneseCalendar_FormulaAi ""
이 경우 FormatString 값을 사용할 수 없습니다.
그러나 데이터 유형이 "DateTime"이므로 DateTime으로 값을 얻을 수 있습니다.
...
if (cell.TryGetValue<DateTime>(out var dateValue))
{
dictionary.Add($"{name}_DateTime", dateValue.ToString());
}
...
결과
JapaneseCalendar_DateTime "9/22/2020 12:00:00 AM"
날짜(긴)
실제 값
9/22/2020
엑셀에 표시
Tuesday, September 22, 2020
결과
Date(Long)_FormatString "44096"
Date(Long)_CachedValue "44096"
Date(Long)_ValueCached ""
Date(Long)_DataType "Number"
Date(Long)_FormulaAi ""
DataType이 "숫자"이기 때문에 결과는 Excel의 값과 거리가 멉니다.
셀에 "September", "AM"등과 같은 알파벳 값이 있으면 ClosedXML이 숫자로 처리됩니다.
이 경우 TryGetValue로 값을 얻을 수 없습니다.
그러나 DataType을 DateTime으로 강제 설정하면 TryGetValue로 DateTime 값을 얻을 수 있습니다.
...
var format = cell.Style.DateFormat.Format;
if(cell.DataType == XLDataType.Number &&
(format.Contains(@"mmmm") || format.Contains(@"AM/PM")))
{
cell.DataType = XLDataType.DateTime;
}
if (cell.TryGetValue<DateTime>(out var dateValue))
{
dictionary.Add($"{name}_DateTime", dateValue.ToString());
}
...
결과
Date(Long)_DateTime "9/22/2020 12:00:00 AM"
더 좋은 방법을 원합니다.
Reference
이 문제에 관하여(【.NET Core】【ClosedXML】셀 값 가져오기 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/masanori_msl/net-core-closedxml-getting-cell-values-2-554j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)