Excelのワークシートからデータを読み込んでいます。データの一部はパーセント値で、これらの値は自動的に小数点に変換されます。つまり、90%→0.90です。私はこれを起こらないようにとにかく見つけることができない。また、Excelのシート文字列のすべてのデータではありませんか?だから、なぜ数字の書式設定が起こっているのだろうか?C#小数点以下に変換されたExcelの割合
アドバイスありがとうございます。
よろしくお願いいたします。
Excelのワークシートからデータを読み込んでいます。データの一部はパーセント値で、これらの値は自動的に小数点に変換されます。つまり、90%→0.90です。私はこれを起こらないようにとにかく見つけることができない。また、Excelのシート文字列のすべてのデータではありませんか?だから、なぜ数字の書式設定が起こっているのだろうか?C#小数点以下に変換されたExcelの割合
アドバイスありがとうございます。
よろしくお願いいたします。
Excelワークシートを確認します。セルのフォーマットがPercentage
の場合、データはたとえば90.0%
のように表示されますが、0.9
として保存されます。
番号をインポートする前にセル形式をチェックすると、必要な変換を処理できます。
Range.NumberFormat
プロパティは、ExcelでFormat Cells
ダイアログボックスで使用するのと同じ形式の文字列を返す:あなたはInterop.Excelを使用していると仮定すると、
。 Percentage
は、タイプ0.00%
の書式文字列のショートカットにすぎず、Percentage
タイプで選択されたdecimal places
は、書式文字列の小数点以下のゼロの数を単純に変更します。
EDITセルの範囲の形式を見つける方法の
例:
nfmt
はあなたのフォーマット文字列が含まれています
Worksheet wks = new Worksheet();
String nfmt = (string)((Range)wks.Cells[1,1]).NumberFormat;
%
を確認できますパーセンテージとして小数部を表示するようにセル(または範囲)がフォーマットされているかどうかを判断します。範囲が異なる書式文字列のセルにまたがる場合、nfmt
はNULL
になります。
ありがとうございます。私はリンクをチェックアウトしましたが、C#の例ではRange.NumberFormatメソッド/プロパティの使い方を理解するのに十分ではありませんでした。 – Kevin
@Kevinはいくつかのコード例を追加しました –
パーセントは、Excelの書式設定アーティファクトです。実際の数は常に小数です(あなたの場合は0.9
)。パーセントはあなたの番号をワークシートに表示する唯一の方法です。
列がパーセンテージであることがわかっている場合は、100
を掛ける必要があります。
ws.Cells[1, 1].NumberFormatLocal = XlConditionValueTypes.xlConditionValuePercent;
ws.Cells[1, 1].NumberFormat = "0,00%";
値を読み取るために使用しているライブラリ(OpenXML SDK、NPOIなど) – andypaxo
いいえ、一部のデータは数字です。そして.90は有効かつ適切なパーセンテージです。 "90%"は文字列であり、パーセンテージではありません。データを表示するときは、それに応じてフォーマットする必要があります。 – banging