2010-08-27 3 views
1

У меня есть приложение Delphi, который считывает данные из таблицы Excel с помощью кода, подобного следующий:Ole Excel Delphi Дата Проблема

procedure TForm1.Button1Click(Sender: TObject); 
var 
    xlApp, xlWorkBook, xlWorkSheet, arr: Variant; 
begin 
    xlApp := CreateOLEObject('Excel.Application'); 
    xlApp.Visible := False; 

    xlWorkBook := xlApp.Workbooks.Open('C:\Temp\Book1.xlsx'); 
    xlWorkSheet := xlApp.WorkSheets[1]; 
    arr := xlWorksheet.Range['E2:E2'].Value; 
    xlApp.Quit; 
end; 

Значение, сохраненное в таблице в ячейке E2: E2 является 10/01/1900 (дд/мм/гггг). Однако возвращаемое значение - 09/01/1900, то есть накануне. Почему это происходит, когда кажется, что он работает правильно для всех дат в другие годы с 1900 года?

ответ

5

Пит, эта проблема - старая ошибка excel, потому что excel неправильно предполагает, что год 1900 года является високосным годом. поэтому все этапы между 01-01-1900 и 29-02-1900 зависят от этой ошибки.

проверить эти ссылки для получения дополнительной информации

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