CONCATENATE 在使用 c# 的互操作 excel 中不起作用

CONCATENATE is not working in interop excel using c#

我正在使用 C# 以编程方式使用公式 =CONCATENATE(A1,":",B1)-CONCATENATE(C1,":",D1) 创建 excel 但是我在以编程方式添加分号“:”时出错

帮我解决这个问题

错误:HRESULT:0X800A03EC

OSheet.Cells[1,1] = 10;
OSheet.Cells[1,2] = 30;
OSheet.Cells[1,3] = 5;
OSheet.Cells[1,4] = 25;
OSheet.Cells[1,5].Formula = "=CONCATENATE(A1,:,B1)-CONCATENATE(C1,:,D1)";
OSheet.Cells[1,5].NumberFormat = "hh:mm";

试试这个:

OSheet.Cells[1,5].Formula = "=CONCATENATE(TEXT(A1-C1,"00"),":",TEXT(B1-D1,"00"))";

Text function doc

你说的在Excel中有效和你在你的c#代码中写的不是一回事:

C#: "=CONCATENATE(A1,:,B1)-CONCATENATE(C1,:,D1)"
XL:  =CONCATENATE(A1,":",B1)-CONCATENATE(C1,":",D1)

看出区别了吗?在你的 c# 中,你去掉了冒号周围的引号

让你的 C# 像:

OSheet.Cells[1,5].Formula = "=CONCATENATE(A1,\":\",B1)-CONCATENATE(C1,\":\",D1)";

在引号前加上斜杠告诉 c#“这个引号是字符串的一部分,而不是结束字符串”