我正在使用Telerik控件来操作Excel工作簿。在这里,我通过以下方式访问Workbook Named Ranges:
ISpreadsheetName Name_Level2;
workbook.Names.TryGetSpreadsheetName("IP_Stredisko_Level2_End", out Name_Level2);
之后我从Name_Level2.RefersTo
获得的结果是一个简单的字符串,如下所示:“= Sheet1!$ A $ 5”
我正在尝试将此引用转换为适当的CellRange
对象,可在操作特定单元格值时使用该对象。
是否有任何内置方法如何进行转换,或者我必须自己编写方法?
答案 0 :(得分:0)
最后,由于我没有在文档中找到任何内容,我创建了自己的转换器。希望它可以帮到某人。
private static CellRange GetCellRange(string sReference, string sWorkbookName)
{
if (string.IsNullOrWhiteSpace(sReference))
return null;
sReference = sReference.Replace("=" + sWorkbookName + "!", string.Empty);
sReference = sReference.Replace("$", string.Empty);
string sColumn = string.Empty;
string sRow = string.Empty;
for (int i = 0; i < sReference.Length; i++)
{
if (char.IsDigit(sReference[i]))
sRow += sReference[i];
else
sColumn += sReference[i];
}
int iRow = Convert.ToInt16(sRow) -1;
int iCol = GetColIndex(sColumn);
if (iRow >= 0 && iCol >= 0)
return new CellRange(iRow, iCol,iRow,iCol);
else
return null;
}
//accepting up to AZ
private static int GetColIndex(string sReference)
{
if (sReference.Length > 1)
{
int x = (int)sReference[1];
return 25 + ((int)sReference[1] - 65);//25 as 26 letters in alphabet -1 (start from 0)
}
return (int)sReference[0] - 65;
}