为什么 Excel 会更改我的日期显示值,我该如何防止它这样做?
Why is Excel changing my date display value, and how can I prevent it from doing that?
似乎 Excel 正在采用我分配给单元格的值,例如 "Sep 15" 并将它们更改为“15-Sep”
我有代码应该以我想要的格式分配 val (MMM yy
):
internal static string GetMMMYYFromYYYYMM(String YYYYMMVal)
{
// code from
DateTime intermediateDate = DateTime.ParseExact(YYYYMMVal, "yyyyMM", CultureInfo.InvariantCulture);
return intermediateDate.ToString("MMM yy");
}
...这样调用:
var monthYearCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 4];
monthYearCell.Value2 = GetMMMYYFromYYYYMM(MonthYear);
...但数据仍然 written/displayed 为 "YY-MMM",例如“15-Sep”
我调试了上面两行执行后monthYearCell
的值,发现monthYearCell对象的"Text"属性确实是“15-Sep”;它“应该”是"Sep 15",因为这是从GetMMMYYFromYYYYMM()
辅助方法返回的内容。
Excel 显然(对吗?)将值从 "Sep 15" 等更改为“15-Sep”等。我估计 Excel 一定是 "autocorrecting" 在幕后什么的;这让我想起了我曾经看过的一部电影("Reds" 也许吧?)当他的编辑改变他写的内容时,主角变得半弹道。我经常对 Word 和 Excel 有这种感觉。我怎么能告诉 Excel(假设这是问题所在)不要管它 - "What I have written, I have written"?
我确实尝试将值从原始 "YYYYMM"
格式更改为我之前想要的格式:
monthField.NumberFormat = "MMM yy";
...但是将“201509”和“201510”等值都更改为 "Sep 51"...?!?
我认为它来自 Excel 存储日期的方式。它们是自 01-01-1900 以来的天数。 Stored dates in Excel
提取它们时,它们会查看格式的本地化设置。您想要保留的任何格式都需要在检索它们之后或检索它们时进行。
如果您在值前加上 ' 以指示 Excel 它应该被视为文本,那么它不会尝试将您的值解析为日期。
当您使用日期格式设置 Excel 字段时,它会将任何字符串转换为日期时间。
使用:
monthYearCell.NumberFormat = "@";
然后使用:
monthYearCell.Value = GetMMMYYFromYYYYMM(MonthYear);
似乎 Excel 正在采用我分配给单元格的值,例如 "Sep 15" 并将它们更改为“15-Sep”
我有代码应该以我想要的格式分配 val (MMM yy
):
internal static string GetMMMYYFromYYYYMM(String YYYYMMVal)
{
// code from
DateTime intermediateDate = DateTime.ParseExact(YYYYMMVal, "yyyyMM", CultureInfo.InvariantCulture);
return intermediateDate.ToString("MMM yy");
}
...这样调用:
var monthYearCell = _xlPivotDataSheet.Cells[_lastRowAddedPivotTableData + 1, 4];
monthYearCell.Value2 = GetMMMYYFromYYYYMM(MonthYear);
...但数据仍然 written/displayed 为 "YY-MMM",例如“15-Sep”
我调试了上面两行执行后monthYearCell
的值,发现monthYearCell对象的"Text"属性确实是“15-Sep”;它“应该”是"Sep 15",因为这是从GetMMMYYFromYYYYMM()
辅助方法返回的内容。
Excel 显然(对吗?)将值从 "Sep 15" 等更改为“15-Sep”等。我估计 Excel 一定是 "autocorrecting" 在幕后什么的;这让我想起了我曾经看过的一部电影("Reds" 也许吧?)当他的编辑改变他写的内容时,主角变得半弹道。我经常对 Word 和 Excel 有这种感觉。我怎么能告诉 Excel(假设这是问题所在)不要管它 - "What I have written, I have written"?
我确实尝试将值从原始 "YYYYMM"
格式更改为我之前想要的格式:
monthField.NumberFormat = "MMM yy";
...但是将“201509”和“201510”等值都更改为 "Sep 51"...?!?
我认为它来自 Excel 存储日期的方式。它们是自 01-01-1900 以来的天数。 Stored dates in Excel
提取它们时,它们会查看格式的本地化设置。您想要保留的任何格式都需要在检索它们之后或检索它们时进行。
如果您在值前加上 ' 以指示 Excel 它应该被视为文本,那么它不会尝试将您的值解析为日期。
当您使用日期格式设置 Excel 字段时,它会将任何字符串转换为日期时间。
使用:
monthYearCell.NumberFormat = "@";
然后使用:
monthYearCell.Value = GetMMMYYFromYYYYMM(MonthYear);