20

私はxlrdExcelファイルからデータを読み取るために使用します。

ファイルに格納されている整数の場合、たとえば63、はそれをタイプxlrdとして解釈します。63.0number

なぜ整数としてxlrd認識できないのですか?63

sheet.row(1)[0].value私たちに与えると仮定します63.0。どうすれば元に戻すことができますか63

4

6 に答える 6

26

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 時間の無意味な浪費のように思えます。

于 2012-01-11T21:16:58.157 に答える
15

ドキュメントのさまざまなセルタイプを見ると、セルの整数タイプはなく、単なる浮動小数点数であるように見えます。したがって、整数を書き込んだ場合でも、フロートが返されるのはそのためです。

浮動小数点数を整数に変換するには、次を使用しますint

>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
于 2012-01-11T19:51:33.460 に答える
12

整数である数字として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

これがお役に立てば幸いです:)

于 2012-01-11T21:00:27.070 に答える
5

私はxlrdドキュメントからこの宝石を思い出しました:

Excelスプレッドシートの日付

実際には、そのようなことはありません。あなたが持っているのは浮動小数点数と敬虔な希望です。

同じことが整数にも当てはまります。おそらく、敬虔な希望を差し引いたものです。

于 2012-01-11T20:44:01.517 に答える
0

Excel で表示される数値を文字列に変換しようとするコードを作成しました。このアプローチは、少なくとも整数とカンマの後に 2 桁の数字に対して機能します。他の多くの形式でも機能するはずです。

アイデア、スクリーンショット、コードはこちら: http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/

于 2013-10-29T14:29:43.597 に答える