在Excel中使用正确的分隔符
在用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 Options> Advanced(Application.DecimalSeparator)中的“Decimal Separator”以匹配ListSeparator时,这不起作用。
用指定范围的字符串调用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;
}
希望它能帮助别人。
您可以考虑使用Application.Union
方法来构建您的范围。 像(未经测试)的东西:
Application.Union(sheet.get_Range("A1:A2"), sheet.get_Range("A5"));
链接地址: http://www.djcxy.com/p/75097.html
上一篇: The correct separator to use in Excel get
下一篇: Prism localization issue: correct number and datetime format is not used