c#将A1表示法转换为R1C1算法

时间:2016-06-09 05:49:15

标签: c#

我试图将A1表示法转换为int类型的行和列,0开始索引。我得到了一个用C编写的代码,我试图制作一个c#。列是好的,但我在行中遇到问题。

异常详细信息:System.FormatException:输入字符串的格式不正确

  

row_col.Add(“row”,int.Parse(cellAddr + ii));

private Dictionary<string, int> ParseA1Notation(string cellAddr)
{
    Dictionary<string, int> row_col = new Dictionary<string, int>();
    int ii = 0, jj, colVal = 0;
    while (cellAddr[ii++] >= 'A') { };
    ii--;

    for (jj = 0; jj < ii; jj++) colVal = 26 * colVal + cellAddr[jj] - 'A' + 1;
    row_col.Add("col", colVal);
    row_col.Add("row", int.Parse(cellAddr + ii));
    return row_col;
}

继承了最初的C代码..

void rc(char * cellAddr, int *row, int *col) {
    int ii=0, jj, colVal=0;
    while(cellAddr[ii++] >= 'A') {};
    ii--;
    // ii now points to first character of row address
    for(jj=0;jj<ii;jj++) colVal = 26*colVal + toupper(cellAddr[jj]) -'A' + 1;
    *col = colVal;
    *row = atoi(cellAddr+ii);
}

1 个答案:

答案 0 :(得分:1)

请将行row_col.Add("row", int.Parse(cellAddr + ii))更改为row_col.Add("row", Int32.Parse(cellAddr.Substring(ii)))