如何防止Excel将值转换为日期格式?

时间:2016-09-12 15:01:18

标签: c# excel date epplus

最近(没有人注意到它之前发生过,如果有的话)一些“ID”类型的值正由Excel转换为日期。正如您在此处所看到的那样,转换值有一些逻辑,用户在其中添加了一列以显示基本值的实际内容,以及它们应如何表示(原始,无转换):

enter image description here

因为在“01”之后有一个“ - ”Excel认为“01-”应该是1月,假设最后两个字符代表年份。

在不包含短划线的商品代码中,它们将保持不变。如何防止Excel以这种方式“有用”并将这些值转换为日期?

更新

回应Scott Craner的评论,这是我必须写出的价值代码:

using (var memberItemCodeCell = priceComplianceWorksheet.Cells[rowToPopulate, DETAIL_MEMBERITEMCODE_COL])
{
    memberItemCodeCell.Style.Font.Size = DATA_FONT_SIZE;
    memberItemCodeCell.Value = _memberItemCode;
    memberItemCodeCell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
}

...当我试图通过在单元格名称后面键入“for”来弄清楚如何将值格式化为Text或General时,我会看到以下选项:

enter image description here

那么我需要使用什么 - FormatedText(sic)或ConditionalFormatting,以及我如何具体设置这些列格式为Text或General,如果这两个中的任何一个是首选?

3 个答案:

答案 0 :(得分:0)

我通常在准备表格来放置数据时,我定义了数据类型,因此Excel不会尝试查找数据类型。

在这种情况下,我会使用Text数据类型。例如:

enter image description here

答案 1 :(得分:0)

我认为您想要将数字格式更改为文字。

使用" at"使用NumberFormat属性指定文本格式。字符。

memberItemCodeCell.Style.Font.Size = DATA_FONT_SIZE;
memberItemCodeCell.NumberFormat = "@";
memberItemCodeCell.Value = _memberItemCode;
memberItemCodeCell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

另外,对于它的价值,请查看有关ValueValue2之间差异的文章/问题。理解差异并使用正确的差异是很好的。在你的情况下,我怀疑它是否重要。

答案 2 :(得分:-1)

最终为我工作的是使用这种技术将正确的数据类型分配给单元格中的值(通过调用ConvertValueToAppropriateTypeAndAssign()),然后在事实之后根据需要进行格式化:

return View(await _context.Blogs.Include(p => p.Posts).ToListAsync());