2009-04-21 4 views
3

В настоящее время у меня есть лист Excel с одним из столбцов, находящимся в формате даты.Задача преобразования поля даты Excel

Что я вижу, когда я открываю таблицу что-то вроде 12/29/09 и программа видит 40176.

Я понял, что это значение присутствует, когда я изменить столбец общего текста.

Мой вопрос: Как я могу узнать значение 12/29/09 вместо 40176 или как я могу изменить 40176 на действительную дату?

Моя программа находится в C# должен быть прочитан в C#


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

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
string myPath = @"C:\Test.xls"; 
excelApp.Workbooks.Open(myPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0); 

Microsoft.Office.Interop.Excel.Sheets sheets = excelApp.Worksheets; 
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1); 
excelApp.Visible = true; 

if(((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2 != null) 
    DateString = ((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2.ToString(); 
+1

Как вы открываете и читать электронную таблицу? Interop? –

ответ

12

Вы можете использовать DateTime.FromOADate() преобразовать двойной в значение DateTime.

+1

Кори и я оба должны тебе пиво :) –

2

Как сказал Рид Копси, метод DateTime.FromOADate() преобразует значение в DateTime. Если, однако, вы хотите 12/29/09 в качестве строки и не хотите манипулировать им дальше, вместо этого вы можете использовать cell.Text.

+0

Да, 4 года спустя ... И ты все еще сделал свой день! : D Это должен быть ответ. люди не должны использовать «FromOADate()» в этом случае.U может вернуть его обратно в datetime, когда это необходимо ... –

1

Используйте функцию excel TEXT(val,format).

Пример:

В ячейке A2 введите =today() и вы получите номер, как 40189 , если ввести в ячейку A2

Если вы входите =TEXT(today(),"mm/dd/yyyy") вы получите сегодняшнюю дату в формате текста и будет выглядеть так: "01/30/2012"

0

Вы можете использовать функцию Текст.

Синтаксис

Text(Value,FormatText) 

Пример

1) Я положил 40176 в первенствуйте A2 2), то я refrence его в формуле ниже

=TEXT(A2,"mm/dd/yy") 

на A3

Тогда значение приходит 12/29/09. так же, как вы просили

Внимание:

Если поставить одинарные кавычки вместо двойных кавычек он может не работать

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