Excelワークシートからデータを読み取っています。一部のデータはパーセント値であり、これらの値は自動的に小数に変換されます(つまり、90%-> 0.90)。とにかくこれが起こらないようにするために私は見つけることができないようです。また、Excelのシート文字列のすべてのデータではありませんか?では、なぜ数値の書式設定が行われるのでしょうか。
アドバイスをいただければ幸いです。
よろしく。
Excelワークシートからデータを読み取っています。一部のデータはパーセント値であり、これらの値は自動的に小数に変換されます(つまり、90%-> 0.90)。とにかくこれが起こらないようにするために私は見つけることができないようです。また、Excelのシート文字列のすべてのデータではありませんか?では、なぜ数値の書式設定が行われるのでしょうか。
アドバイスをいただければ幸いです。
よろしく。
パーセンテージは、Excelの書式設定アーティファクトです。実際の数は常に小数です(0.9
あなたの場合)。パーセンテージは、ワークシートに数値を表示するための唯一の方法です。
列がパーセンテージを表すことがわかっている場合は、それを。で乗算する必要があります100
。
Excelワークシートを確認します。セルが次のようにフォーマットされているPercentage
場合、データは次のようにのみ表示されますが、90.0%
として保存され0.9
ます。
数値をインポートする前にセル形式を確認すると、必要な変換を処理できます。
Interop.Excelを使用していると仮定します:
このプロパティは、 Excel Range.NumberFormat
のダイアログボックスで使用するのと同じフォーマット文字列を返します。タイプのフォーマット文字列へのショートカットであり、タイプで選択されたものは、フォーマット文字列の小数点以下のゼロの数を変更するだけです。Format Cells
Percentage
0.00%
decimal places
Percentage
編集
セルの範囲の形式を見つける方法の例:
Worksheet wks = new Worksheet();
String nfmt = (string)((Range)wks.Cells[1,1]).NumberFormat;
ここには、セル(または範囲)が小数部をパーセンテージで表示するようにフォーマットされているかどうかnfmt
を確認できるフォーマット文字列が含まれます。範囲が異なるフォーマット文字列のセルにまたがる場合に注意%
してください!nfmt
NULL
ws.Cells[1, 1].NumberFormatLocal = XlConditionValueTypes.xlConditionValuePercent;
ws.Cells[1, 1].NumberFormat = "0,00%";