从python中的xls或xlsx文件读取后,将数据转换为字符串

时间:2013-08-29 08:45:28

标签: python django xls xlsx openpyxl

我正在编写一个函数,用于从xls / xlsx文件中读取数据并插入到db中。但问题是在从xls文件的单元格中读取数据后,该值变为浮点类型。

以下是来自xls文件的示例数据:

Zip     Zone
35096       
31723   1
35963       
36037   D 21
36849   HANDLE

我正在使用from openpyxl.reader.excel import load_workbook来读取xls文件。当我将这些值插入DB时,从 Zip 区域列中读取了值后,所有数值都变为浮点类型,但应保存为字符串。上述2 db列的类型为 VARCHAR

从终端的xls文件读取后,我还打印了上面2列的值,结果如下:

ZIP

==========
<type 'float'>
35096.0
==========
<type 'float'>
31723.0
==========
<type 'float'>
35963.0
==========
<type 'float'>
36037.0
==========
<type 'float'>
36849.0

ZONE

==========
<type 'NoneType'>
==========
<type 'float'>
1.0
==========
<type 'NoneType'>
==========
<type 'unicode'>
D 21
==========
<type 'unicode'>
HANDLE

我的代码

try:
    book = load_workbook(filename=file_path, use_iterators=True)
    ws = book.worksheets[0]
except:
    return 'Error message'


for row in (ws.iter_rows()):
    zip = row[0].internal_value
    zone = row[1].internal_value

其他信息:我在Ubuntu机器上使用python 2.6 如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果zip是序列,请尝试

zip = [str(fl) for fl in row[0].internal_value[:]]