使用python构建excel报告

时间:2013-11-16 22:37:50

标签: python sql excel report iteration

我目前正在使用Python构建excel报告。它将包含应用作业类型的列和应用作业的相应源的行。

我有Person个对象列表,其中包含NameSourceJob属性。我目前的挑战是优雅地遍历这些人并计算按来源应用于每项工作的人数。

目前,我正在获取Jobs的唯一列表和唯一的源列表并迭代它们并将它们与匹配的人匹配并增加计数器并将此计数写入表示正确的excel单元格工作/来源组合。

我拥有SQL数据库中的所有内容,并且正在构建来自相应表的Person个对象,因此我对如何完成此操作几乎不受限制,但我觉得有一个更优雅的解决方案来生成这些计数而不是我目前是如何完成它的。

欢迎所有想法。以下是我目前的解决方案:

for job in jobs:
    for source in sources:
        for person in people:
            if person.job == job and person.source = source:
                count += 1

2 个答案:

答案 0 :(得分:1)

tPerson:
ID
名称
Job_ID(fkey)
Source_ID(fkey)

tSource:
ID
名称

tJob:
ID
名称

表格结构如上所述。期望的输出将是excel电子表格,其中不同的作业排在第一列,而不同的源列在第一列。对于每个作业/源组合单元,我需要计算与所述组合匹配的人数。 Excel输出如下:

作业1作业2
源1个3 4
源2个1 14
Source3 3 32

有关实现此目标的最有效方法的任何想法?

答案 1 :(得分:0)

您应该能够从SQL生成所有这些。查询显然取决于您的表定义,但类似

select
    p.name,
    j.job,
    s.source,
    count(*)
from
    person p
        inner join
    job j
        on p.job = j.job
        inner join
    source s
        on p.source = s.source
group by
    p.name,
    j.job,
    s.source
order by
    p.name,
    j.job,
    s.source

如果您有此查询,您可能无需使用Python即可将结果直接放入Excel中。