kenews 发表于 2023-4-5 16:59

c# exceldna 自定义函数使用自定义类,无法正常计算

下面的自定义函数是计算300*400*500mm 这种立方体的体积或者侧面积的,函数中加入了自定义类,但自定义类的代码怎么改都在Excel里计算还是显示#value。

   public static object MsBase(string dim, UInt16 opt = 0)
      {
            string pattern = @"\d+\*\d+\*\d+";
            if (Regex.IsMatch(dim,pattern))
            {
                string tmp = Regex.Match(dim, pattern).Value;
                string[] arg = Regex.Split(tmp, @"/*");
                double L = Convert.ToDouble(arg) / 1000;
                double W = Convert.ToDouble(arg) / 1000;
                double H = Convert.ToDouble(arg) / 1000;
                Box myclass = new Box(L,W,H);
                if (opt == 0) { return myclass.Cube(); }
                if (opt == 1) { return myclass.SideArea(); }
                else { return ExcelError.ExcelErrorNA; }
            }
            else { return ExcelError.ExcelErrorNA; }
      }
    }
public class Box
    {
      public double L { get; set; }
      public double W { get; set; }
      public double H
      {
            get; set;
      }
      public bool IsValid { get; set; }

      // Constructor
      public Box(double param1,double param2,double param3)
      {
                L = param1;
                W = param2;
                H = param3;

      }
      //Function
      public double Cube() { return L * W * H; }
      public double SideArea() { return 2 * (L + W) * H; }
      public double BottomArea() { return L * W; }

    }
}

only998 发表于 2023-4-5 18:54

你可以试下把excel单个单元格的宽度拉得很宽,或者设置单元格格式为数值,显示2位小数。

kenews 发表于 2023-4-5 19:25

only998 发表于 2023-4-5 18:54
你可以试下把excel单个单元格的宽度拉得很宽,或者设置单元格格式为数值,显示2位小数。

上面的代码和单元格宽度一点关系都没有:rggrg

浅暮丶千殇 发表于 2023-4-5 21:27

将返回到Excel 的值在C#里调试输出,然后把这个值手动填写到Excel里看看,不排除单元格的格式问题
页: [1]
查看完整版本: c# exceldna 自定义函数使用自定义类,无法正常计算