2016-08-01 4 views
1

Мне нужно получить столбец Excel. Мои первые значения столбца «A» отформатированы следующим образом: 6/20/2016 10:44. У меня нет никаких проблем извлечения столбца «A» с этим форматом, используяC# получение значения значения excel

using DocumentFormat.OpenXml; 

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

Моего второго столбец «B» отформатирован в 6/20/2016. без времени, только дату. , но моя проблема в том, когда я попробовал этот код ниже:

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

Как я могу получить значения excel с этим видом формата даты 6/30/2016?

+0

ли значение в столбце B отформатирован как дата или это на самом деле строка? – dev1998

+0

Привет @ dev1998, спасибо за проверку моего вопроса. Столбец B отформатирован как дата. –

+0

Все работает для меня, и я использую те же 2 строки, которые вы используете. Что за неправильное значение, что показывает отладчик для Cell.InnerText? – dev1998

ответ

2

Я нашел некоторый код здесь и модифицировали его: open xml reading from excel file

Я имею в виду то же самое, что Hambone думает, а именно ячейка Excel имеет что-то еще в нем, или вы не читаете эту ячейку вы думаете, находятся.

Вот код, я использую, и это работает для меня:

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(); 
      } 


     } 
    } 
} 
Смежные вопросы