кажется, что Excel принимает значения Поручают клетки, такие как «Сен 15» и изменить их «15-сентябрь»Почему Excel меняет значение отображения даты и как я могу предотвратить его выполнение?
У меня есть код, который должен назначить Вал в формате Я хочу (MMM yy
):
internal static string GetMMMYYFromYYYYMM(String YYYYMMVal)
{
// code from http://stackoverflow.com/questions/40045761/how-can-i-convert-a-string-in-the-format-yyyymm-to-mmmyy
DateTime intermediateDate = DateTime.ParseExact(YYYYMMVal, "yyyyMM", CultureInfo.InvariantCulture);
return intermediateDate.ToString("MMM yy");
}
... называется так:
var monthYearCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 4];
monthYearCell.Value2 = GetMMMYYFromYYYYMM(MonthYear);
... но данные по-прежнему записываются/отображается как "YY-МММ", такие как "15-сен"
Я отлаживал значение monthYearCell
после двух строк непосредственно над выполнением и обнаружил, что свойство «Текст» объекта monthYearCell действительно «15-Sep»; он "должен" быть "Сен 15", так как это то, что возвращается из вспомогательного метода GetMMMYYFromYYYYMM()
.
Excel, очевидно, (справа?) Меняет значения с «Сен 15» и т. Д. На «15-Sep» и т. Д. Я считаю, что Excel должен быть «автокорректированием» за кулисами или чем-то еще; это напоминает мне фильм, который я видел однажды («красные», может быть?), где главный герой пошел полубаллистическим, когда его редактор изменил то, что он написал. Я часто так чувствую о Word и Excel. Как я могу сказать Excel (при условии, что это проблема) просто оставить его в покое - «Что я написал, я написал»?
Я попытался изменить значение из формата необработанного "YYYYMM"
на то, что я хочу этот путь ранее:
monthField.NumberFormat = "MMM yy";
... но что измененные значения, такие как «201509» и «201510» на «сен 51 "для обоих ...?!?
Установить формат ячейки в текст, прежде чем присваивать значение, или предварять значение с ", чтобы указать Excel следует рассматривать как текст. –
Я пробовал: monthYearCell.Format = "Text"; перед присвоением значения свойству Value2 и, хотя он скомпилирован и запущен, я получил ошибку времени выполнения: «System .__ ComObject» не содержит определения для «Формат» –
. Вторая идея сработала: monthYearCell.Value2 = "'" + ReportRunnerConstsAndUtils.GetMMMYYFromYYYYMM (MonthYear); Сделайте этот ответ, и я помечаю его как таковой. –