为什么Excel改变我的date显示值,我怎么能阻止它做到这一点?
看来,Excel正在将我分配给单元格的值(例如“Sep 15”)更改为“15-Sep”
我有代码应该以我想要的格式( MMM yy
)分配val:
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-MMM”,如“15-Sep”
在上面两行直接执行后,我debugging了monthYearCell
的值,发现monthYearCell对象的“Text”属性确实是“15-Sep”; 它应该是“9月15日”,因为这是GetMMMYYFromYYYYMM()
辅助方法返回的GetMMMYYFromYYYYMM()
。
Excel很明显(对吧?)将值从“9月15日”改为“15-Sep”等等。 我认为Excel必须在幕后或其他方面“自动修正” 这让我想起我曾经看过的一部电影(“红人”也许?),当主编改变他写的内容时,主angular变成半弹道。 我经常对Word和Excel感觉如此。 我怎么能告诉Excel(假设这是个问题),让它独自一人 – “我写的,我写的”?
我曾尝试将原始"YYYYMM"
格式的值更改为之前我想要的值:
monthField.NumberFormat = "MMM yy";
…但是,将“201509”,“201510”等的值更改为“9月51日”
如果你用“向Excel表示”前面加上了值,那么它应该被视为文本,那么它就不会试图将你的值parsing成date。
当您使用date格式设置Excel字段时,它会将任何string转换为dateTime。
使用:
monthYearCell.NumberFormat = "@";
然后使用:
monthYearCell.Value = GetMMMYYFromYYYYMM(MonthYear);
我认为它来自Excel存储date的方式。 这是自01-01-1900以来的天数。 在Excel中存储date
提取它们时,它们正在查看您的本地化设置的格式。 您要保留的任何格式需要在检索之后或之后进行。