2016-06-26 16 views
1

スプレッドシートの書式設定時に値を取得するにはどうすればよいですか?通貨フォーマットpandasは書式としてExcelを読み込みます

この例でスプレッドシートに取り組んIM:

ITEM NAME UNIT PRICE 
item1  USD 99 
item2  SGD 45 

しかし用語「USD」と「SGD」はエクセルの書式設定機能を使用して添加し、そしてread_excel機能によって見られませんパンダの私は値を取得しますが、通貨名は取得しません。私はそれだけでスプレッドシートで作業することができました。私は約6〜7枚のシートを持つさまざまなスプレッドシートを持っていたので、私は優れたソリューションではなくパンダ(またはPython)レベルのソリューションを望んでいました。

ありがとうございます。

ダニエル、これは私が 'xlrd'エンジンを実装したもので、何もしていないようです。

excel = pd.ExcelFile('itemlist.xlsx', sheetname=None) 
master = pd.DataFrame(None) 

for sheet in excel.sheet_names: 
    df = pd.read_excel(excel,sheet,header=2, engine='xlrd') 
    master=master.append(df) 
+0

pandasは、フォーマット情報も解析できる内部的に 'xlrd'を使用しています。 – Daniel

+0

@Danielは私の投稿を編集して、xlrdエンジンをどのように実装したかを示していますが、何かを見逃しているようです – carlo

答えて

1

これを行うには素晴らしい方法はありません。 pandasは、番号の形式の知識がない、とxlrdが.xlsxのファイルから形式を読み取ることができていないようです - あなたはこれを達成するためにopenpyxlを使用することができhere

を参照してください、それは少なくとも数形式へのアクセスを持っています基本的にすべての解析ロジックを実装する必要があるようです。同じ問題を抱えて誰にも

In [26]: from openpyxl import load_workbook 

In [27]: wb = load_workbook('temp.xlsx') 

In [28]: ws = wb.worksheets[0] 

In [29]: ws.cell("B2") # numeric value = 4, formatted as "USD 4" 
Out[29]: <Cell Sheet1.B2> 

In [30]: ws.cell("B2").value 
Out[30]: 4 

In [31]: ws.cell("B2").number_format 
Out[31]: '"USD "#' 
0

、私は、スプレッドシートに表示されているようにそれは通貨の詳細を保存し、少し面倒ながら、それがなかった。このanswer

を使用して、CSVをに各シートを分離することによってそれをやりましたとにかく仕事。

関連する問題