【问题标题】:c# convert OADate to Valid DateTime Microsoft.Office.Interop.Excelc# 将 OADate 转换为有效日期时间 Microsoft.Office.Interop.Excel
【发布时间】:2016-08-27 04:38:10
【问题描述】:

我正在尝试从 Excel 文件中获取日期字段,但日期带有一般格式,如“42373”,我尝试了一切,例如转换为双精度然后再转换为日期时间。我找不到任何代码来帮助我,我正在使用业务系统来做到这一点..所以这就是为什么我在这里找到的常规代码不起作用

我想获取“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(Periodo).ToString("MMM");

【问题讨论】:

    标签: c# excel-interop


    【解决方案1】:

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

    【讨论】:

    • 您好,感谢您的回答!我不知道为什么我的变量“Periodo”的值不起作用..我从 Excel MM/dd/yyyy 获取日期,它得到了像 42373 这样的通用格式..所以它应该可以工作..尝试转换为双精度但没有成功
    • 您如何将其转换为双重@FranciscoLuizBrumPinto?
    【解决方案2】:

    知道了,谢谢!!

        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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多