2016-08-26 1 views
0

Excel 파일에서 날짜 필드를 가져 오려고하는데 날짜가 "42373"과 같은 일반 형식으로되어 있으므로 double로 변환하는 것과 같은 모든 작업을 시도했습니다. datetime으로. 나는 나를 돕기 위해 어떤 코드도 찾을 수 없다. 나는 그렇게하기 위해 비즈니스 시스템을 사용하고있다. 그래서 나는 정규 코드가 내가 일하는 것을 찾지 못하는 이유가 무엇인지를 알고있다.OADate를 유효한 DateTime으로 변환하십시오. Microsoft.Office.Interop.Excel

나는 "42373"을 유효하게하고 포맷을 원한다. 날짜 (2016-04-01) 그리고 그것들로부터 "MMM"을 얻습니다.

obs : CSharp Ineterop을 사용합니다.

using System; 
    using System.Text; 
    using System.Reflection; 
    using System.Collections; 
    using System.Globalization; 
    using System.Collections.Generic; 
    using System.Collections.ObjectModel; 
    using Microsoft.Office.Interop.Excel; 

    public class Macro : MacroBase { 

    private enum Header1 { 
    [Name("ACCOUNT NUMBER")] 
    Begin, 
    } 

    private enum Header2 { 
    [Name("PERIOD COVERED")] 
    Period, 
    } 

    protected override bool Run() { 

    var RSheet = (Worksheet)TargetWorkbook.Worksheets[1]; 
    if (RSheet == null) 
     return false; 

    var excelTable = new ExcelTable<Header2>(){ CacheHeaders = true }; 
    if (excelTable.Initialize(RSheet) == false) 
     return false; 

    var excelTable1 = new ExcelTable<Header1>(){ CacheHeaders = true }; 
    if (excelTable1.Initialize(RSheet) == false) 
     return false; 

    var Periodo = excelTable[Header2.Period].get_Offset(1,0).Value; 

     excelTable1[Header1.Begin].get_Offset(2,0).Value2 = Periodo; 

    return true; 
    } 

    } 

 string Periodo =  excelTable[Header2.Period].get_Offset(1,0).Value.ToString();  
     excelTable1[Header1.Begin].get_Offset(2,0).Value = DateTime.FromOADate(42373).ToString("MMM"); 

DateTime.FromOADate(value).ToString("MMM")

답변

0

사용을 작동하지 마십시오 WORKS!

string Periodo = excelTable[Header2.Period].get_Offset(1,0).StringValue(); 

    string b = Periodo; 
    double d = double.Parse(b); 
    DateTime conv = DateTime.FromOADate(d); 

    var Bingo = conv.ToString("MMM-yyyy"); 
+0

안녕하세요. 답변 해 주셔서 감사합니다. 나는 왜 내 변수 "Periodo"의 가치가 작동하지 않을지 모르겠다. 나는 Excel MM/dd/yyyy에서 날짜를 얻었고 42373과 같은 일반 형식을 얻는다. 그래서 작동해야한다. double로 변환하려고 시도했다. 하지만 성공이 없습니다 –

+0

어떻게 그것을 double @ FranciscoLuizBrumPinto로 바꾸고 있습니까? –

0

감사, 알았어요

 DateTime.FromOADate(Periodo).ToString("MMM");