0

私は C# にまったく慣れていないので、ご容赦ください。

private static string GetFormattedValue(string dataType, dynamic cellValue)
    {
        string formattedCellValue = string.Empty;
        if (cellValue == null)
            cellValue = DBNull.Value;

        if (dataType == "STRING")
        {
            formattedCellValue = string.Format("'{0}',", cellValue);
        }
        else if (dataType == "NUMBER")
        {
            if (string.IsNullOrEmpty(Convert.ToString(cellValue)))
                cellValue = 0;
            formattedCellValue = string.Format("'{0}',", cellValue.ToString("F17"));
        }
        else if (dataType == "DATE")
        {
            formattedCellValue = string.Format("'{0}',", cellValue);
        }
        else
        {
            formattedCellValue = string.Format("'{0}',", cellValue.ToString("F17"));
        }

        return formattedCellValue;

dataTypeNUMBER でcellValue整数の場合、「string.ToString(System.IFormatProvider) に一致する最適なオーバーロード メソッドには無効な引数があります」というエラーが表示されます。

cellValue多くの場合、「F17」がないと、科学的表記法として返される非常に小さい数値 (これにより、別のエラーが発生します) だけでなく、上記のエラーの原因となる整数も返されます。

これは私のコードではありません。実行しているだけで、ステップ実行するのに十分なことがわかっています。cellValue整数かどうかを判断するために読み取ることができるかどうかを判断する方法はありますか? または他のより良い提案はありますか?

4

2 に答える 2

0

Double.TryParseなど、文字列を数値に解析しようとするメソッドは多数あります。

于 2013-04-05T02:34:13.750 に答える
0

F17 は Double データ型を参照します...文字列ではありません。

これを試して、私に知らせてください:

        else if (dataType == "NUMBER")
        {
            if (string.IsNullOrEmpty(Convert.ToString(cellValue)))
                cellValue = 0;
            formattedCellValue = string.Format("'{0}',", Convert.ToDouble(Convert.ToString(cellValue)).ToString("F17"));
        }
于 2013-04-05T02:35:09.607 に答える