我的列值如下:
public interface IMessageSender
{
int MessageType { get; }
void Send();
}
public class TypeOneMessageSender : IMessageSender
{
public int MessageType => 1;
public void Send()
{
//logic here for sending 1 type of message
}
}
public class TypeTwoMessageSender : IMessageSender
{
public int MessageType => 2;
public void Send()
{
//logic here for sending 2 type of message
}
}
public class MessageSender
{
private readonly IReadOnlyList<IMessageSender> _senders;
/*inject IReadOnlyList<IMessageSender> with DI*/
public MessageSender(IReadOnlyList<IMessageSender> senders)
{
_senders = senders;
}
public void Send(int messageType)
{
var sender = _senders.FirstOrDefault(it => it.MessageType == messageType);
if(sender == null)
throw new InvalidOperationException($"Unable to send message of type {messageType}") ;
sender.Send();
}
}
在包含1-1到12-2的单元格中,excel不会干涉我,但是从13-1开始直到第n行,它会显示警告&#34; 文本日期与2位数年份&#34;。不幸的是,这真的不是日期。此外,我已经尝试在输入任何值之前将所述行/单元格格式化为文本,但实际上当excel看到&#34; 13-1&#34;以上,它显示错误。我该如何解决这个问题?
附加信息:当使用公式显示行时,没有错误,但遗憾的是,使用公式不是一个选项,我需要按原样使用值。
答案 0 :(得分:4)
您可以输入=“1-1”而不是1-1 当您键入1-1时,excel将此更改为1-Jan。键入=“1-1”时,Excel将该值视为字符串。希望它有所帮助。
答案 1 :(得分:3)
只需右键单击列单击格式单元格...在类别列表上的数字选项卡上选择文本,这将输入您输入的任何内容或作为文本。
但是如果你是复制粘贴数据,那么使用匹配目标格式(M),只需右键单击单元格并选择匹配目标格式(M)而不是Ctrl-V。
答案 2 :(得分:0)
关闭这些错误类型的错误检查。
With Application.ErrorCheckingOptions
.TextDate = False
.NumberAsText = False
End With
还可在文件,选项,公式,错误检查规则中找到。
答案 3 :(得分:0)
如果在日期开头添加单引号,Excel会将其视为字符串。也适用于作为文本的数字
答案 4 :(得分:0)
阻止 excel 将复制粘贴的数字/文本值转换为日期