私はxlrd
Excelファイルからデータを読み取るために使用します。
ファイルに格納されている整数の場合、たとえば63
、はそれをタイプxlrd
として解釈します。63.0
number
なぜ整数としてxlrd
認識できないのですか?63
sheet.row(1)[0].value
私たちに与えると仮定します63.0
。どうすれば元に戻すことができますか63
。
Excel はすべての数値を float として扱います。一般に、your_number % 1 == 0.0
真か偽かは問題ではありません。
例:それぞれの場合に 1A1 = 63.0, B1 = 63, C1 = INT(A1), A2 = TYPE(A1), B2 = TYPE(B1), C2 = TYPE(C1)
を返すことがわかります。TYPE()
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 時間の無意味な浪費のように思えます。
ドキュメントのさまざまなセルタイプを見ると、セルの整数タイプはなく、単なる浮動小数点数であるように見えます。したがって、整数を書き込んだ場合でも、フロートが返されるのはそのためです。
浮動小数点数を整数に変換するには、次を使用しますint
。
>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
整数である数字として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
ドキュメントからこの宝石を思い出しました:
Excelスプレッドシートの日付
実際には、そのようなことはありません。あなたが持っているのは浮動小数点数と敬虔な希望です。
同じことが整数にも当てはまります。おそらく、敬虔な希望を差し引いたものです。
Excel で表示される数値を文字列に変換しようとするコードを作成しました。このアプローチは、少なくとも整数とカンマの後に 2 桁の数字に対して機能します。他の多くの形式でも機能するはずです。
アイデア、スクリーンショット、コードはこちら: http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/