【问题标题】:Decimal separator comma but I want save data with point小数分隔符逗号,但我想用点保存数据
【发布时间】:2016-11-21 08:55:52
【问题描述】:

我必须读写一个excel文件。 问题是当PC是小数点分隔符时,(逗号)同样会在excel文件中用逗号保存数字。 我想用点而不是逗号来保存所有模式的值。

这是一段代码:

var wb = openWorkBook(filename);
var ws = wb.Worksheet("CNF");
IXLRow row = ws.Row(device.Ordinal - 1 + FirstRow);
for (int j = 0; j < MAXCOLS; ++j)
{
   IXLCell cell = row.Cell(j + FirstCol);

   cell.Value = Convert.ChangeType(device[j], m_column_type[j]);
}

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    Convert.ChangeType(object, Type) 使用线程的当前文化进行转换。听起来你想要不变的文化,所以你应该使用Convert.ChangeType(object, Type, IFormatProvider)

    cell.Value = Convert.ChangeType(device[j], m_column_type[j], 
        CultureInfo.InvariantCulture);
    

    【讨论】:

    • @fede186:是的,你可以这样做,但这不是最好的解决方案。最好避免以逗号开头。
    • 因为我看到一开始只读取文件中的点,然后当将数据插入某个文本框时,如果小数点分隔符是点,则将其读取为点,如果是逗号十进制中有一个逗号。如果您想更改文本框中的值,如果十进制中有逗号,则不允许我插入一个点,然后末尾会将逗号保存在 corrispoindente excel 文件的整行中。
    • 我知道替换时不是很聪明,但也许是为了避免将您的手放在代码的许多部分中,我认为您可以仅在保存 excel 文件行的地方用点替换逗号.
    • @fede186:抱歉,我并没有真正理解所有这些评论,但基本上你应该非常清楚需要解析的文本数据与解析的最终结果之间的区别 - 我将您的问题阅读为您已经拥有解析的数据并且您正在尝试将其转换为文本形式,但使用 . 作为小数点分隔符的情况。这就是我的答案所针对的。如果不是这种情况,您应该编辑您的问题以使其更清楚。 (我们不知道 devicem_column_type 中的内容并没有帮助。minimal reproducible example 真的很有帮助。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2021-12-25
    相关资源
    最近更新 更多