2016-12-19 7 views
1

2つのワークブックのサマリー比較と3番目のアウトプットを行っています。私は、一連のcsvファイルに各ワークブック(同じように構造化された、15個のワークシートを含む)をエクスポートし、次にcsvファイルAで読み取ってテーブルとテーブルの比較を行い、ワークブック。私はxlrdcsvPython:ワークシートを繰り返してCSVにエクスポートする

を使用しています

はここで失敗しているコードの一部です:

outpath_a = os.path.join(working_directory, "out_a") # dir set earlier 
workbook_a_sheets = workbook_a.sheet_names() 
workbook_b_sheets = workbook_b.sheet_names() 

for a in workbook_a_sheets: 
    out_csv = os.path.join(outpath_a, a) 
    with open(out_csv, 'wb') as oca: 
     cw = csv.writer(oca, dialect=csv.excel, quoting=csv.QUOTE_ALL) 
     for rownum in xrange(a.nrows): 
      cw.writerow(a.row_values(rownum)) 

それは私にエラーを与えている:

AttributeError: 'unicode' object has no attribute 'nrows' 

私が代わりにunicodecsvを使用してみましたcsvimport unicodecsv as csv)ですが、エラーは同じです。

+0

あなたはおそらく 'はxrange(workbook_a.nrowsを)'意味:

は、あなたはそれを

固定ループを得るためにあなたのワークブックにsheet_by_nameメソッドを呼び出す必要があります。 'a'はワークシートの名前であり、ワークシート自体ではありません。 –

+0

ブック全体を検索しませんか?私は各シートを繰り返し、各シートを独自のcsvファイルにエクスポートしたいと思います。 – auslander

+0

あなたは正しいです!名前を使用してシートオブジェクトを取得する必要があります。 –

答えて

0

シート名のようにシート名にアクセスしようとしています。

for a in workbook_a_sheets: 
    out_csv = os.path.join(outpath_a, a) 
    with open(out_csv, 'wb') as oca: 
     cw = csv.writer(oca, dialect=csv.excel, quoting=csv.QUOTE_ALL) 
     # get sheet object from its name 
     a_sheet = workbook_a.sheet_by_name(a) 
     for rownum in xrange(a_sheet.nrows): 
      cw.writerow(a_sheet.row_values(rownum)) 
+0

素晴らしい! xlrd宇宙の小さな部分がちょうど私に開いた。これはうまくいきましたが、今はなぜか分かりました。 – auslander

+0

これは質問を投稿するときに何かを試すことのポイントです(失敗したとしても) –

関連する問題