Я использую библиотеку Microsoft Office C # (Microsoft.Office.Interop.Excel
), чтобы записать некоторые значения в существующий файл Excel.
В Excel я уже отформатировал некоторые ячейки в файле, которые будут интерпретироваться какдата, как показано на скриншоте:
Как видите, для ячейки задан формат dd/MM/yyyy
.
Однако, когда я тогдазаписал значение с помощью библиотеки взаимодействия, например:
cell.Value2 = "20/06/2019"
Я заметил, что это не работает: когда я открывал последний файл в Excel, ячейка интерпретировалась как обычный текст, а не как дата.
Итак, я выполнил некоторую отладку, и оказалось, что формат, который я установил для ячейки, полностью игнорируется, и что библиотека взаимодействия использует американский формат, как вы можете видеть, проверив NumberFormat
свойство ячейки с визуальным отладчиком студии:
Что я здесь не так делаю?Почему используется американский формат даты?
Некоторая дополнительная информация:
- В моей операционной системе (итальянский) по умолчанию используется формат
dd/MM/yyyy
- Я не измениллокаль моего приложения на c # любым способом
- Моя копия Excel настроена на итальянский язык, который также должен использовать формат
dd/MM/yyyy
по умолчанию.Я проверил в Options -> Language, и я могу подтвердить это.
EDIT: и интересная вещь, которую я нашел: если я дважды щелкаю по ячейке, а затем щелкаю по ней, она «волшебным образом»исправляет форматирование .... почему?И можно ли имитировать двойной щелчок по ячейке с помощью Excel Interop?