2016-08-01 8 views
1

私は日付のExcelの列を取得する必要があります。 私の最初の列 'A'の値は6/20/2016 10:44のように書式設定されています。私は時間がないと6/20/2016.としてフォーマットされC#は価値の日付を取得する

using DocumentFormat.OpenXml; 

double d = double.Parse(theCell.InnerText); 
DateTime conv = DateTime.FromOADate(d).Date; 

私の第二列「B」、ちょうど日付を使用して、この形式で列「A」を取得するのは問題がありません。 しかし、私の問題は、私は以下のコードをしようとしたときです:

using DocumentFormat.OpenXml; 

double d = double.Parse(theCell.InnerText); 
DateTime conv = DateTime.FromOADate(d).Date; 

theCell.InnerText値は、私は別の値を持つ午前1455

です。値は12/25/1903 12:00:00 AMに変更されます

どのようにしてこの種類の日付形式6/30/2016でExcelの値を取得できますか?

+0

ですか、それは実際に文字列のですか? – dev1998

+0

こんにちは@ dev1998、私の質問をチェックしていただきありがとうございます。列Bは日付としてフォーマットされます。 –

+0

それはすべて私のために働いている、私はあなたが使用している同じ2行を使用しています。値が間違っている場合、Cel.InnerTextに表示されるデバッガは何ですか? – dev1998

答えて

2

私はここからいくつかのコードを設置し、それを修正:すなわち、Excelのセルはそれで何かを持っている、またはあなたがあなたの思いのセルを読んでいない、私はHamboneが考えていることと同じことを考えていますopen xml reading from excel file

あります。ここで

は、私が使用していたコードであり、それは私の作品:日付としてフォーマット列Bの値は

using System; 
using System.Linq; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Spreadsheet; 



namespace ConsoleApplication1 
{ 
    class Program 
    { 

     private static void Main(string[] args) 
     { 
      var filePath = @"c:\xyz\stack_c_Sharp.xlsx"; 
      using (var document = SpreadsheetDocument.Open(filePath, false)) 
      { 
       var workbookPart = document.WorkbookPart; 
       var workbook = workbookPart.Workbook; 

       var sheets = workbook.Descendants<Sheet>(); 
       foreach (var sheet in sheets) 
       { 
        var worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id); 
        var sharedStringPart = workbookPart.SharedStringTablePart; 

        string text; 
        var rows = worksheetPart.Worksheet.Descendants<Row>(); 
        foreach (var row in rows) 
        { 
         Console.WriteLine(); 
         int count = row.Elements<Cell>().Count(); 

         foreach (Cell theCell in row.Elements<Cell>()) 
         { 

          text = theCell.CellValue.InnerText; 

          double d = double.Parse(theCell.InnerText); 
          DateTime conv = DateTime.FromOADate(d).Date; 

          Console.Write(text + " "); 
          Console.Write(conv + " "); 

         } 
        } 
       } 
       Console.ReadLine(); 
      } 


     } 
    } 
} 
関連する問題