字符串格式

时间:2016-10-27 12:41:24

标签: c# escaping string-formatting epplus double-quotes

我需要一些字符串格式化和转义的帮助。 从这个字符串格式开始:

  

string.Format(“= IF(OR({0} =”“; {1] =”“);”“; {0} - {1})”,cell1,cell2)

我正在尝试获取此字符串:

  

= IF(OR(L2 = “”; M2 = “”); “”; L2-M2)

这是一个我需要作为excel公式插入的字符串。我尝试了string.Format,我尝试过@"...",我甚至尝试连接字符串片段并转义引号。 无论我尝试什么,我总是得到这个字符串:

  

= IF(OR(L2 = \ “\”; M2 = \ “\”); \ “\”; L2-M2)

当我尝试打开它时,这会破坏我的excel文件。我不明白为什么要留在那里。

任何提示都会受到欢迎。感谢。

  int atCol = ws.Dimension.End.Column + 1;

  //insert the header
  ws.Cells[1, atCol].Value = "Diff. Quote letzte 2 Jahre";
  ws.Cells[1, atCol].Style.WrapText = true;

  for (int i = 2; i<=ws.Dimension.End.Row; i++)
  {
    var cell1 = ws.Cells[i, atCol + 1].Address;
    var cell2 = ws.Cells[i, atCol + 2].Address;
    //ws.Cells[i, atCol].Formula = string.Format("=IF(OR({0}=\"{2}\";{1}=\"{2}\");\"{2}\";{0}-{1})", cell1, cell2, string.Empty);
    //ws.Cells[i, atCol].Formula = string.Format(@"=IF(OR({0}="";{1}="");"";{0}-{1})", cell1, cell2);
    //string formula = string.Format(@"=IF(OR({0}="""";{1}="""");"""";{0}-{1})", cell1, cell2);
    //string formula = @"=IF(OR(" + cell1 + "=\"\";" + cell2 + "=\"\");\"\";" + cell1 + "-" + cell2 + ")";
    string formula = string.Format("=IF(OR({0}='';{1}='');'';{0}-{1})", cell1, cell2);
    ws.Cells[i, atCol].Formula = formula;
  }

我正在使用Win10,VS2015,.Net 4.0和EPPLUS框架进行Excel操作。

2 个答案:

答案 0 :(得分:0)

你只需要在其他人之前添加一个(&#34;)。

=IF(OR(L2="""";M2="""");"""";L2-M2)

答案 1 :(得分:0)

字符串中有一个错误{1] =应该是{1} =。以下显示了两种可以转义双引号的方法。

string.Format("=IF(OR({0}=\"\";{1}=\"\");\"\"({0}-{1})", cell1, cell2);
string.Format(@"=IF(OR({0}="""";{1}="""");""""({0}-{1})", cell1, cell2);