이미이 용도에 특이한 것으로 보이지 않는 것처럼 보입니다. 내가 생각해 낸 일상이 여기있다.
/// <summary>
/// Represents the formula used for converting date serial values stored within the workbook into DateTime instances.
/// </summary>
/// <remarks>
/// Information on date serial conversion is available here: http://www.documentinteropinitiative.com/implnotes/ISO-IEC29500-2008/001.018.017.004.001.000.000.aspx
/// </remarks>
public enum XlsxDateCompatibility
{
/// <summary>
/// Standard dates are based on December 30, 1899 and are considered "Standard 1900" dates.
/// </summary>
StandardBase1900,
/// <summary>
/// Excel for Windows backwards compatible dates are based on December 31, 1899 are are considered "Backwards compatible 1900" dates.
/// </summary>
BackwardsCompatibleBase1900,
/// <summary>
/// Excel for Macintos backwards compatible dates are based on January 1, 1904 and are considered "1904" dates.
/// </summary>
BackwardsCompatibleBase1904
}
private static readonly IDictionary<XlsxDateCompatibility, DateTime> _dateSerialBaseDates
= new Dictionary<XlsxDateCompatibility, DateTime>
{
{XlsxDateCompatibility.StandardBase1900, new DateTime(1899, 12, 30)},
{XlsxDateCompatibility.BackwardsCompatibleBase1900, new DateTime(1899, 12, 31)},
{XlsxDateCompatibility.BackwardsCompatibleBase1904, new DateTime(1904, 1, 1)}
};
public static DateTime DateSerialToDateTime(double dateSerial, XlsxDateCompatibility dateCompatibility)
{
// special case for dateCompaitility 1900, Excel thinks 1900 is a leap year
// http://support.microsoft.com/kb/214019
if (dateCompatibility == XlsxDateCompatibility.BackwardsCompatibleBase1900 && dateSerial >= 61.0)
{
dateSerial -= 1;
}
DateTime baseDate;
if (!_dateSerialBaseDates.TryGetValue(dateCompatibility, out baseDate))
{
baseDate = _dateSerialBaseDates[XlsxDateCompatibility.StandardBase1900];
}
return baseDate.AddDays(dateSerial);
}
귀하의 의견에 감사드립니다. 이미 날짜를 확인하고 읽는 방법에 대한 기술적 인 세부 사항에 대해 질문하고 좋은 대답을 얻었습니다. 실제로는 대답이 보여주는 것보다 훨씬 복잡합니다. 필자는 날짜를 읽을 수있는 사용자 정의 코드를 작성하기에 충분한 정보를 가지고 있지만, 갑자기이 문제가 일반적인 문제 여야하고 기존 코드를 찾을 수 없다는 사실에 놀랐다. –
@Samuel - 그래, 내 대답은 내가 어떻게 엑셀에서 날짜를 확인하는 태클을 시작 할지도 모르겠지만, 내가 쓴 것보다 더 복잡하다는 말은 틀림없이 50,000 발 전망이다. 기본적인 Open XML SDK 질문에 대한 답변을 찾기가 어렵 기 때문에이 코드를보고 싶습니다. – amurra
내가 끝나면 프로젝트를 게시 할 것이다. Open XML SDK에서 SAX 스타일 처리를 사용하는 DataSet 변환기에 xlsx를 사용하는 것만으로 끝났습니다. –