0

複数のExcelファイルから読み取り、データをxmlファイルに書き込むための小さなスクリプトを作成しました。何が悪いのかを説明するために、スクリプトを少し削除しました。次のようになります。

import glob, xlrd

xmlFile = 'example.xml'
xmlData = open(xmlFile, 'a')

for xlsfile in glob.glob('*.xls'):

    wb = xlrd.open_workbook(xlsfile)
    sh1 = wb.sheet_by_index(0)
    sh1c1 = sh1.col_values(1)   


    for cell in sh1c1: xmlData.write(cell + "\n")

私のExcelファイルのセルにテキストしかない限り、すべてうまくいきます。セルの1つに番号がある場合。エラーが発生します:

 Traceback (most recent call last):
    File "test.py", line 14, in <module>
   for cell in sh1c1: xmlData.write(cell + "\n")
TypeError: unsupported operand type(s) for +: 'float' and 'str'

数字が含まれるのは、一部のセルと一部のファイルのみです。フロート、整数、文字列についてはすでにたくさん読んでいますが、上記のコードにこれを適用する方法が見つかりません。私はPythonにまったく慣れていないので、まだすべてに頭を悩ませることはできません。誰かが私を正しい方向に向けたいですか?

よろしくお願いします。

4

1 に答える 1

0

+コメント投稿者が示唆しているように、演算子を使用するには、floatを文字列にキャストする必要があります。

for cell in sh1c1: xmlData.write(str(cell) + "\n")

または、次のように書き直すことができます。

for cell in sh1c1: xmlData.write("{0}\n".format(cell)) 

または、次のように:

for cell in sh1c1: xmlData.write("%s\n" % cell)
于 2012-12-31T13:48:53.237 に答える