2012-01-18 10 views
5

私は、私がここで見つけたものから何度か答えられたと感じるという質問があります。しかし、初心者として、私は本当に基本的な操作を実行する方法を理解することはできません。Python xlrd:抽出された値を変換する方法は?

は、ここでのことだ:

  • 私はちょうど(SHが私のシートであると仮定して) sh.cell(0,0)を使用していた値を取得するためにxlrdを使用する場合、私は.xlsを持っていると。

  • セル内の文字列が文字列であれば、text:u'MyName'のようなものが得られ、文字列を保持したいだけです'MyName';

  • セル内の数字が数字の場合は、number:201.0のようなものが得られます。整数は、201のままにしておきたいだけです。

私が欲しいものとしてフォーマットした値を抽出する必要があるものは誰でも私に示すことができます。ありがとうございます。

答えて

12

sh.cell(x、y)は、クラスCellのインスタンスを返します。 sh.cell(x、y)を印刷すると、クラスのrepr関数が返されます(したがって、type:valueが出力されます)。

あなたは試してみてください:

cell = sh.cell(x,y) 
print(cell.value) 

私はxlrdていませんが、私はそれがドキュメントを与えられた仕事になると思うので、私はこれをテストすることはできません。https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#sheet.Cell-class

+0

をも、それは、value属性の文字列のUnicodeバージョンを返します。 u'MyName 'とやりたい – comamitc

+0

ありがとうございました。できます! – clowny

+0

@comamitc:ユニコードを取得していて、バイトが必要な場合は、デコードしないで*エンコードします。しかし、多くの場合、おそらくユニコードを使用する方が理にかなっています。 –

2

あなたもちょうどxlrdを使用して値を抽出することができますむしろ、完全なExcelのセルが返さ取得より:

book = xlrd.open_workbook('example.xls') 
first_sheet = book.sheet_by_index(0) 
print first_sheet.row_values(0) 

はあなたの最初のシートの最初の行の値を取得します。

スライスはrow_values(および同様に列)に使用できます。したがって、シート全体から値を取得するには、次のようにします。xlrdを使用するともっと洗練された方法があるかもしれませんが、それは私にとっては効果的です。

0

これに対する正解は、単にCell.value関数を使用することです。これは、セルに含まれるものに応じて、数字またはUnicode文字列を返します。

0

これは、Excelのセルの内容の値を提供します。

var = sh.cell(x,y) 
    print var.value 

しかし、このデータのタイプはまだ「ユニコード」です。文字列(ASCII)に変換するには:あなたはおそらく、あなただけの「MYNAME」をしたい場合は何に依存することをデコードする必要がありますので、

var.value.encode('ascii','ignore') 
関連する問題