Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python构建excel报表_Python_Sql_Excel_Report_Iteration - Fatal编程技术网

用python构建excel报表

用python构建excel报表,python,sql,excel,report,iteration,Python,Sql,Excel,Report,Iteration,我目前正在用Python构建一个excel报告。它将包含应用的作业类型列和应用作业的相应源行 我有一个Person对象列表,其中包含属性Name、Source和Job。我目前面临的挑战是优雅地遍历这些人,并按来源统计申请每项工作的人数 目前,我正在获取一个唯一的作业列表和一个唯一的源列表,并对它们进行迭代,将它们与匹配的人进行匹配,增加计数器,并将此计数写入表示正确作业/源组合的excel单元格 我拥有SQL数据库中的所有内容,并且正在从相应的表中构建Person对象,因此对于如何实现这一点,我

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

我有一个
Person
对象列表,其中包含属性
Name
Source
Job
。我目前面临的挑战是优雅地遍历这些人,并按来源统计申请每项工作的人数

目前,我正在获取一个唯一的
作业列表
和一个唯一的源列表,并对它们进行迭代,将它们与匹配的人进行匹配,增加计数器,并将此计数写入表示正确作业/源组合的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

您应该能够从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中。

tPerson:
ID
名称
作业ID(fkey)
来源ID(fkey)

t来源:
ID
名称

tJob:
ID
名称

上述表格结构。所需的输出将是一个excel电子表格,其顶行排列着不同的作业,第一列下列出了不同的来源。对于每个工作/来源组合单元格,我需要一个与所述组合匹配的人数计数。Excel输出如下所示:

Job1Job2
来源134
Source2114
Source3332


关于实现这一点的最有效方法有什么想法吗?

Laurence,尽管我非常欣赏您的输入,但它并没有返回我需要的确切结果。它仍然需要用python进行一些处理,我更喜欢完全用SQL或完全用python进行。@user1769667您也应该能够从python调用查询,并处理结果。将python与SQL链接并处理结果不是问题。似乎正在为每个造成问题的人确定所需的工作/来源数量。我提供的循环实现了这一点,但它并不像我希望的那样吸引人。理想情况下,我希望构建一个表示excel工作表的数据结构,这样我就可以随时编写它,而不必在每次需要时执行计数。为什么不发布表结构和所需的输出?这样就更容易帮助您编写代码。我同意这一切听起来都可以从SQL直接实现。