基于Oracle查询将标题行写入Excel

2024-09-29 17:10:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到一种有效的方法,将头行从Oracle表写入xls文件,而不是每次都这样做,因为我的一些结果是50-70列。在

headings1 = ['Column 1', 'Column 2', etc]  
rowx = 0
for colx, value in enumerate(headings1):
    sheet1.write(rowx,colx,value)

我当前的代码只会写入从第2行开始的数据行,因为我一直在手动创建一个Excel文件模板,它预先定义了所有的工作表名称和标题行,但是创建模板需要大量的工作,我希望去掉这一部分,让它自动将第1行作为标题写入。在

^{pr2}$

当前文件包括5-7个工作表,我必须在同一个工作簿中写入数据,以及正在使用的5-7个游标,这是第一个游标的示例。在


Tags: 文件数据方法模板标题valuecolumnxls
2条回答

PEP249允许使用^{} attribute of cursor objects,它已经是implemented in cx_Oracle。在

这将返回一个元组列表,其中每个元组的第一个元素是列名:

>>> db = cx_Oracle.connect('schema/pw@db/db')
>>> curs = db.cursor()
>>> sql = "select * from dual"
>>> curs.execute(sql)
<__builtin__.OracleCursor on <cx_Oracle.Connection to schema@db/db>>
>>> column_names = curs.description
>>> column_names
[('DUMMY', <type 'cx_Oracle.STRING'>, 1, 1, 0, 0, 1)]
>>>

为了演示一个(非常)稍微复杂的情况,我创建了这个表:

^{pr2}$

然后就看你如何使用它了:

>>> sql = "select * from tmp_test"
>>> curs.execute(sql)
<__builtin__.OracleCursor on <cx_Oracle.Connection to schema@db/db>>
>>> curs.description
[('COL1', <type 'cx_Oracle.NUMBER'>, 127, 22, 0, -127, 1), ('COL2', <type 'cx_Oracle.STRING'>, 10, 1
0, 0, 0, 1)]
>>> ','.join(c[0] for c in curs.description)
'COL1,COL2'
>>>

在开始枚举光标值之前,只需写下这一行。在

我也需要做同样的事情。通过以下代码实现:

# Write header row
for c, col in enumerate(cursor.description):
    ws.write(0, c, col[0])

然后我用simular for循环编写数据记录,您已经在使用这个循环。在

相关问题 更多 >

    热门问题