range.set_Value форматирования для дат в Excel VSTO - PullRequest
0 голосов
/ 09 марта 2019

Следующий код помещает значения даты в Excel, но по какой-то причине они автоматически не форматируются как дата. Если я ввожу эти даты вручную - они автоматически форматируются. Excel работает в Windows с настройкой европейской локали. Как сделать так, чтобы Excel автоматически форматировал даты? Я не могу явно применить форматирование, так как диапазон, который я помещаю в Excel, может содержать столбцы разных типов данных, и весь диапазон должен быть вставлен в один кадр из соображений производительности.

string[,] arr = new string [2, 2];
            arr[0, 0] = "Date";
            arr[0, 1] = "DateTime";
            arr[1, 0] = "21/12/2018";
            arr[1, 1] = "26/12/2019";
            Range rng = Globals.ThisAddIn.Application.ActiveSheet.Range["A1:B2"];
            rng.set_Value(XlRangeValueDataType.xlRangeValueDefault, arr);

UPDATE: Я фактически сузил это до следующего:

string dt = DateTime.Now.ToString(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat); 
worksheet.Range["A1"].Value = dt; 

Это странно, строка форматируется в соответствии с настройками локали пользователя, но когда я вставляю ее в Excel во второй строке - Excel почему-то конвертирует ее в американский формат. Таким образом, при установке европейского формата даты в Windows, если строка «11/03/2019», то, что я вижу в Excel после запуска кода, «03/11/2019».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...