Tag: cultureinfo

如何更改DataGrid中的数字分隔符?

我有一个数字格式的查询。当使用区域设置更改小数点分隔符(。)—>(,)时,在Excel表格中键入(1.5)将正确更改为(1,5)。 我的问题是在DataGridView控件中,我遵循DataGrid中的相同的过程,但它显示(1.5)—>(15)。 (,)运算符已被删除。 我需要知道,这是DataGrid的实际行为。 我们可以像excel一样执行相同的操作吗? 我已经尝试下面的代码。 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); CultureInfo culture = CultureInfo.CurrentUICulture; culture.NumberFormat.NumberDecimalSeparator = ","; culture.NumberFormat.NumberGroupSeparator = "."; 请参考excel和DataGrid的比较图像 请任何一个build议我如何实现这个像excel?

Excel显示#值! 当区域设置改为非英语时

我只是来了一个问题,Excel将显示#Value! 当区域设置被设置为非英文格式时。 (控制面板 – >地区和语言 – >从列表中select非英语格式) 用户select英文没关系。 所有的UDF结果将通过并在单元格中正确显示。 这对于非英语的人来说是行不通的。 我已经看了一些在线的可能的解决scheme,像这些: http : //support.microsoft.com/kb/320369 http://msdn.microsoft.com/en-us/library/aa168494(v=office.11​​).aspx 所以我做了什么build议,但仍然没有运气。 Excel总是给我#Value! 。 这里有没有人有过类似的问题呢? 有更好的解决scheme 谢谢。

使用InvokeMember通过C#在Excel中培养特定的属性

当我们在C#中通过COM调用Excel对象模型时,它始终使用en-US文化(这是几年前做出的改变,因此无论区域设置如何,都可以在所有机器上使用插件)。 我想调用具有特定文化的Excel对象模型,根据Excel文档执行此操作的方法是使用InvokeMember并传递cultureInfo参数。 https://msdn.microsoft.com/en-us/library/bb157877.aspx 但是,每当我尝试使用除en-US之外的语言环境时,我得到一个System.Reflection.TargetInvocationException。 所以在下面的示例代码中,这个调用将与en-US文化一起工作,但是用fr-CA文化抛出exception。 请注意,在区域设置中更改当前文化不会影响是否抛出exception。 虽然它将根据区域设置确定是否将string解释为使用Value2属性时的数字。 我基于这个例子的代码,这个代码写得很好用: https : //social.msdn.microsoft.com/Forums/office/en-US/2aee0a8a-aaff-48a8-9364-edf1e3fbb9b4/setting -rangevalue2-行为改变之间净20和净40换国际版本-的?论坛= exceldev 有没有人知道我可以做什么样的改变来调用Range.Value2以及en-US以外的特定文化? private void ThisAddIn_Startup(object sender, System.EventArgs e) { try { var excelApp = Globals.ThisAddIn.Application; var workbook = excelApp.Workbooks.Add(); var worksheet = (Excel.Worksheet)workbook.Worksheets[1]; var rangeA1 = worksheet.Range["A1"]; var rangeB1 = worksheet.Range["B1"]; string num1English = "1.1"; string num1French = "1,1"; rangeA1.GetType().InvokeMember("Value2", BindingFlags.Instance | BindingFlags.SetProperty […]

如何用open XML检索excel的文化信息?

我的Excel文件中的数值存储为“。” 十进制分隔符。 我想知道,excel总是使用“。” 作为十进制分隔符? 如果不是的话,那我该如何检索excel文件的文件信息来正确地格式化十进制值呢? 谢谢。

将string转换为DateTime时出现奇怪的行为

在将String转换为DateTime并再次转换为ToString()时,遇到了奇怪的行为。 Convert.ToDateTime("16-02-2012").ToString("MM/dd/yyyy")结果于02-16-2012 Convert.ToDateTime("16-02-2012").ToLongDateString()结果为16。 2012年2月 正如你所看到的,当使用ToLongDateString()时,转换是正确的,但是在使用ToString()时,以某种方式将/转换为。 当我将第一个结果插入到Excel工作表中时,其值实际上是'02 -16-2012 (注意在开头) 当我使用第一个段落低于12的date时,结果将包含/如预期的一样,但会恢复为dd / MM / yyyy。 我尝试使用new System.Globalization.CultureInfo("da-DK", false)转换ToDateTime()时,但没有效果(我们的系统已经设置为达DK – 但我绝望)。 任何人以前见过这种行为? 编辑 为了澄清我的post,丹麦语的date格式是dd-mm-yyyy(我想格式化为mm / dd / yyyy) – 我知道第一个片段是英文date的月份。

在VSTO中的Excel中使用正确的分隔符get_Range

在用C#编写的Excel的VSTO项目中,我需要从单元格的string列表中获取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的string调用get_Range的正确方法是什么? 编辑:稍加修改,以添加我的评论下面的信息。