xlrd
を使用してExcelファイルからデータを読み取ります。
ファイルに格納されている整数の場合、たとえば_63
_の場合、xlrd
はそれをタイプnumber
の_63.0
_として解釈します。
xlrd
が_63
_を整数として認識できないのはなぜですか?
sheet.row(1)[0].value
が_63.0
_を与えると仮定します。どうすればそれを_63
_に戻すことができますか。
documentation のさまざまなセルタイプを見ると、セルの整数型はなく、単なる浮動小数点数であるようです。したがって、整数を書き込んだ場合でも、フロートが返されるのはそのためです。
Floatを整数に変換するには、int
を使用します。
>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
Excelは、すべての数値を浮動小数点数として扱います。一般に、_your_number % 1 == 0.0
_が真であるかどうかは関係ありません。
例:A1 = 63.0, B1 = 63, C1 = INT(A1), A2 = TYPE(A1), B2 = TYPE(B1), C2 = TYPE(C1)
TYPE()
がそれぞれ1を返すことがわかります。
Excelヘルプから:
_If value is TYPE returns
Number 1
Text 2
Logical value 4
Error value 16
Array 64
_
xlrd
は、検出した内容を報告します。 xlrd
は、入力を公開する前に入力をマングルしません。列を_(62.9, 63.0, 63.1, etc)
_から_(62.9, 63, 63.1, etc)
_に変換することは、私には無意味なCPU時間の浪費のように思えます。
Excelシートのすべてのエントリが整数の数値である場合、jcolladoの回答は問題ありません。しかし、あなたがフロートである数を持っていると仮定すると、いつでも次のようなチェック条件を置くことができます-
if i==int(i): //checking for the integer:
print int(i) // solving your problem and printing the integer
else:
print i //printing the float if present
これがお役に立てば幸いです:)
xlrd
ドキュメントからこのgemを思い出しました。
Excelスプレッドシートの日付
実際には、そのようなことはありません。あなたが持っているのは浮動小数点数と敬虔な希望です。
同じことが整数にも当てはまります。おそらく、敬虔な希望を差し引いたものです。
Excelで表示される数値を文字列に変換しようとするコードを作成しました。このアプローチは、少なくとも整数と、コンマの後に2桁の数字がある場合に機能します。他の多くの形式でも機能するはずです。
アイデア、スクリーンショット、コードは次のとおりです: http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-Excel-numbers/