c# – 在VSTO中的Excel get_Range中使用的正确分隔符
作者:互联网
在用C#编写的Excel VSTO项目中,我需要从单元格的字符串列表中获取Range对象.
以下是问题的简化版本:
string strRange = "A1:A2,A5";
Excel.Range r = sheet.get_Range(strRange);
但是,由于列表分隔符可能与不同文化设置中的逗号不同,我实际上使用此:
listSep = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator;
string strRange = "A1:A2" + listSep + "A5";
Excel.Range r = sheet.get_Range(strRange);
我的问题是当用户在Excel选项>中更改“十进制分隔符”时高级(Application.DecimalSeparator)匹配ListSeparator,这不起作用.
使用指定Range的字符串调用get_Range的正确方法是什么?
编辑:轻微修改,以添加我的评论信息如下.
解决方法:
不是最干净的方法,但这种解决方法帮助我:
private static string GetRangeSeparator(Excel.Worksheet sheet)
{
Excel.Application app = sheet.Application;
string sRng = app.Union(sheet.get_Range("A1"), sheet.get_Range("A3")).AddressLocal;
sRng = sRng.Replace("$", string.Empty);
string sSep = sRng.Substring(sRng.IndexOf("A3") - 1, 1);
return sSep;
}
希望它能帮助别人.
标签:c,excel,cultureinfo,vsto 来源: https://codeday.me/bug/20190630/1331535.html