Python-每次格式更改时读取excel数据

Python-每次格式更改时读取excel数据,python,excel,Python,Excel,我从某人那里得到一份excel,我需要每月读取数据。格式每次都不稳定,我说的“不稳定”是指: 数据开始更改的位置:例如,A节这次可能从第4行D列开始,但下次可能从第2行e列开始 每个部分下都有标签。标签的数量也可能会改变。但每次我只需要tag_2和tag_3中的数据(这两个总是会出现) 我需要的唯一数据是每个月(月1-8)的tag_2和tag_3的数据。我想找到一种使用Python的方法,首先找到节名,然后在该节下找到tag_2,tag_3,然后获取month1到month8的数据(月数也可能会

我从某人那里得到一份excel,我需要每月读取数据。格式每次都不稳定,我说的“不稳定”是指:

  • 数据开始更改的位置:例如,A节这次可能从第4行D列开始,但下次可能从第2行e列开始
  • 每个部分下都有标签。标签的数量也可能会改变。但每次我只需要tag_2和tag_3中的数据(这两个总是会出现)
  • 我需要的唯一数据是每个月(月1-8)的tag_2和tag_3的数据。我想找到一种使用Python的方法,首先找到节名,然后在该节下找到tag_2,tag_3,然后获取month1到month8的数据(月数也可能会改变)

    请注意,我不想通过在excel中指定位置来定位所需的数据,因为位置每次都会更改。我该怎么做

    最终产品应该是一个pandas数据框,其中包含tag_2和tag_3的月度数据,并有一列说明数据来自哪个部分


    谢谢。

    我想您可以直接将其作为逗号分隔的文本文件阅读。根据需要,您可以查看每行的tag2和tag3

    with open(filename, "r") as fs:
        for line in fs:
            cell_list = line.split(",")
            # This point you will have all elements on the line as a list
            # you can check for the size and implement your logic
    
    假设(可能是手动粘贴的)信息块不太可能出现在excel工作表的右下角,您可以简单地对行和列进行迭代(为每个行和列设置最大值以防止长时间搜索),直到找到熟悉的值(如“Section a”)并从中开始

    除非我误解了您的意思,否则格式的其余部分应该在月份之间保持一致,这样您就可以简单地假设“month_1”总是向上一个单元格,在初始位置的右侧两个单元格

    我个人没有在python中使用excel工作表,因此我无法说明以下内容在python中是否可行,但它在ExcelVBA中肯定有效:

    您也可以使用Range.find()方法来查找值“Section A”,并继续执行与上面相同的过程,可能会将任何结果写入txt文件,并在必要时从该文件调用python脚本

    我希望这有点帮助