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