将Excel公式转换为C#

将Excel公式转换为C#,c#,C#,我在Excel电子表格中有以下公式- =100000*INT(RIGHT(A2,8)/65536)+MOD(RIGHT(A2,8),65536) 结果示例 660013103525 = 19961861 10014528196 = 22144740 我被要求将此转换功能添加到C#应用程序中。电子表格的目的是将RFID标签转换为门禁系统识别的未知格式编号 我在C#中的所有尝试都没有成功,因为我不知道forula在做什么,也不知道最终的输出格式。这在C#中是相当的 假设您将数字输入存储在字符串

我在Excel电子表格中有以下公式-

=100000*INT(RIGHT(A2,8)/65536)+MOD(RIGHT(A2,8),65536)
结果示例

660013103525 = 19961861

10014528196 = 22144740
我被要求将此转换功能添加到C#应用程序中。电子表格的目的是将RFID标签转换为门禁系统识别的未知格式编号


我在C#中的所有尝试都没有成功,因为我不知道forula在做什么,也不知道最终的输出格式。

这在C#中是相当的

假设您将数字输入存储在字符串中:

String input = "660013103525";
您可以像这样获取与最后8位数字对应的最后8个字符,并将其转换为数字:

int val = int.Parse(input.Substring(input.Length-8, 8));
最终结果如下所示:

int result = 100000 * (val/65536) + (val % 65536);
您可以将其分解为一个接受字符串并返回整数值的方法:

int ComputeValue(String input)
{
    // you should probably check input here

   int val = int.Parse(input.Substring(input.Length-8,8));
   return 100000 * (val/65536) + (val % 65536);
}

这会让你得到你的结果。如果您愿意,您可以进一步细化它,但这至少应该向您展示每一步的进展情况

string A2 = "660013103525";

int intA2, div, mod, output;
if (!int.TryParse(A2.Substring(A2.Length - 8, 8), out intA2)) 
    throw new ArgumentOutOfRangeException("A2");

div = intA2 / 65536;
mod = intA2 % 65536;
output = 100000 * div + mod;
MessageBox.Show(output.ToString());
  • 上面的代码将单元格变量中的输入作为字符串

  • 然后,它从中创建一个整数,以执行公式的右(A2,8)部分

  • 然后,使用步骤2中创建的cellValue integer构造公式的两部分

  • 最后,将这两部分相加得到最终结果


  • 你明白这个公式的作用吗?更重要的是,找出正确的语法。显示您正在使用的代码。它将RFID标签转换为另一个未知格式的数字。我收到了电子表格,并要求将其转换为C#。你想在这里复制/粘贴它吗?此代码不编译(
    子字符串
    需要大写字母S),并且没有给出正确的结果。它的输出是3525。。。
    Substring
    的参数也被反转。您生成了错误的子字符串:Substring(8,input.Length-8)应该是Substring(input.Length-8,8)Yep。。在我的手机上键入答案有点困难。现在修复欢迎使用StackOverflow!你能在你的回答中添加一些上下文吗?只有代码的答案被认为是“低质量”,请看一看:对不起!但我认为我的代码是不言自明的,并且给出了原始海报所需的输出。没问题,我们有一个审查系统来帮助新用户,如果你可以编辑你的答案,在某种环境下,这将非常好。当你在做的时候,最后一个结束}在代码标记之外。
    class Program
    {
        static void Main()
        {
            int factor = 65536;
    
            String cell = "660013103525";
    
            String str = cell.Substring(cell.Length - 8);
    
            long cellValue = Convert.ToInt64(str);
    
            long part1 = cellValue / factor * 100000;
    
            long part2 = cellValue % factor;
    
            long result = part1 + part2;
    
            Console.WriteLine("Input: " + cell);
            Console.WriteLine("Output: " + result);
        }
    }