从Microsoft Excel(.xlsx)文件读取并使用Python插入数据库?

时间:2013-12-31 07:34:03

标签: python database excel postgresql xlrd

我正在开发一个应用程序来读取带有标题的.xlsx,(Excel文件),并将这些行按原样插入到Postgres数据库的数据库表中。

我认为我将使用XLRD库。

关于如何做到这一点的任何想法?

我正在使用Python 2.6.6。

2 个答案:

答案 0 :(得分:1)

到目前为止,最简单的方法是将其转换为CSV,然后使用psql的{​​{1}}或psycopg2's COPY support。当通过内置的\copy模块调用时,任何命令行.xlsxCSV转换器都可以为您工作,或者对旧的Pythons调用subprocess / popen 。您不需要任何特殊的Python库。这也可以让你使用转换器,比如OpenOffice / LibreOffice的命令行模式,它也可以处理各种其他表格数据。

如果您想在Python中完成所有工作,可以使用the xlrd lib you mentioned并将元组逐个反馈到system的{​​{1}}中,这样您就可以仅使用流将行传输到PostgreSQL Python代码。您应该会发现existing examples of psycopg2 based programs that use copy_from很容易适应使用psycopg2作为数据源而不是Python list / csv input / whatever。

答案 1 :(得分:0)

如果您有Excel,请格式化XLS文件,以便没有标题和空白列(基本上只需创建一个表)。这也适用于LibreOffice。然后,将文件另存为CSV。然后,使用文本编辑器查看CSV文件,并验证事情是否正常。

一旦您对CSV的内容感到满意,编写一个读取每一行的python代码然后创建每个字段的列表就非常简单了。这是一个30秒的代码版本:

with open('example.csv','r') as csv_file:
    full = csv_file.read().split('\n')
    for line in full:
    values = line.split(',')
        print values

在'for'循环中,您可以单独访问列表中的每个元素,即'values [0]'