Excel 시트에서 Datetime 값을 읽는 중
엑셀 시트에서 datetime type 값을 읽으려고 하면 두 배의 값이 반환됩니다.예를 들어 값을 읽으려면'2007-02-19 14:11:45.730'
이처럼, 나는 이중 유형 값을 얻고 있습니다. 나는 시간 간격을 사용하여 이 이중 값을 변환하고 있지만, 나는 이 값만 얻고 있기 때문에 성공적으로 완료되지 않았습니다.'2007-02-19 12:00:00 AM'
이제 나는 첫 번째 것과 정확히 같은 날짜 값을 원합니다.내 코드는 다음과 같습니다.
TimeSpan datefromexcel = new TimeSpan(Convert.ToInt32((range.Cells[rCnt, cCnt] as Excel.Range).Value2), 0, 0, 0);
DateTime inputdate = new DateTime(1900, 1, 1).Add(datefromexcel);
arrrow2[cCnt - 1] = inputdate.ToString();
도와주세요!!!감사해요.
DateTime을 사용하여 OLE Automation에서 .net 형식으로 날짜 형식을 변환해야 합니다.OAD 날짜부터.
double d = double.Parse(b);
DateTime conv = DateTime.FromOADate(d);
아마도 당신은 엑셀과 .net을 변환하는 방법을 사용해 볼 수 있을 것입니다.
Excel 시트에서 Datetime 값을 읽는 중: 작동합니다.
string sDate = (xlRange.Cells[4, 3] as Excel.Range).Value2.ToString();
double date = double.Parse(sDate);
var dateTime = DateTime.FromOADate(date).ToString("MMMM dd, yyyy");
또는 셀이 이미 실제 날짜인 경우 를 사용합니다..Value2 대신 값:
excelApp.Range[namedRange].Value
{21/02/2013 00:00:00}
Date: {21/02/2013 00:00:00}
Day: 21
DayOfWeek: Thursday
DayOfYear: 52
Hour: 0
Kind: Unspecified
Millisecond: 0
Minute: 0
Month: 2
Second: 0
Ticks: 634970016000000000
TimeOfDay: {00:00:00}
Year: 2013
excelApp.Range[namedRange].Value2
41326.0
저도 비슷한 상황이 있었고 이것을 작동시키기 위해 아래 코드를 사용했습니다.
Aspose.Cells.LoadOptions loadOptions = new Aspose.Cells.LoadOptions(Aspose.Cells.LoadFormat.CSV);
Workbook workbook = new Workbook(fstream, loadOptions);
Worksheet worksheet = workbook.Worksheets[0];
dt = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxDisplayRange.RowCount, worksheet.Cells.MaxDisplayRange.ColumnCount, true);
DataTable dtCloned = dt.Clone();
ArrayList myAL = new ArrayList();
foreach (DataColumn column in dtCloned.Columns)
{
if (column.DataType == Type.GetType("System.DateTime"))
{
column.DataType = typeof(String);
myAL.Add(column.ColumnName);
}
}
foreach (DataRow row in dt.Rows)
{
dtCloned.ImportRow(row);
}
foreach (string colName in myAL)
{
dtCloned.Columns[colName].Convert(val => DateTime.Parse(Convert.ToString(val)).ToString("MMMM dd, yyyy"));
}
/*******************************/
public static class MyExtension
{
public static void Convert<T>(this DataColumn column, Func<object, T> conversion)
{
foreach (DataRow row in column.Table.Rows)
{
row[column] = conversion(row[column]);
}
}
}
이것이 어떤 1thx_joxin에게 도움이 되기를 바랍니다.
또는 OleDbDataAdapter를 사용하여 Excel에서 데이터를 가져올 수 있습니다.
엑셀 시트에서 날짜 값을 읽는 것과 관련하여 다른 스레드에 제가 올린 간단한 기능을 사용해 보는 것이 좋을 것입니다.
단순히 셀의 텍스트를 입력으로 가져오고 DateTime을 출력으로 제공합니다.
제 샘플 코드가 개선되어 도움이 되었으면 합니다.넷 개발 커뮤니티.
스프레드시트에서 Excel 날짜를 읽지 않는 스레드 C#에 대한 링크입니다.
다른 옵션: 컴파일 시 셀 유형을 알 수 없고 셀 형식이 날짜인 경우Range.Value
원하는 값을 반환합니다.DateTime
물건.
public static DateTime? GetAsDateTimeOrDefault(Range cell)
{
object cellValue = cell.Value;
if (cellValue is DateTime result)
{
return result;
}
return null;
}
언급URL : https://stackoverflow.com/questions/4538321/reading-datetime-value-from-excel-sheet
'source' 카테고리의 다른 글
web.config 파일이 전체 오류 메시지를 표시하도록 설정하는 방법 (0) | 2023.05.02 |
---|---|
집계 프레임워크를 사용한 MongoDB의 그룹 수 (0) | 2023.05.02 |
Git가 프록시 서버와 함께 작동하도록 하는 중 - "Request timeout"(요청 시간 초과됨)으로 인해 실패합니다. (0) | 2023.05.02 |
ASP의 주장은 무엇입니까?NET 아이덴티티 (0) | 2023.05.02 |
모듈에서 __getattr__ (0) | 2023.05.02 |