pythonxlrd通过excel单元格循环查找d的范围

2024-04-25 05:45:36 发布

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

我试图找到一种从excel文件列表中提取数据的方法,我已经能够加载工作簿,选择工作表并从某个单元格中提取数据,但我遇到了问题,因为这些文件不是数据库格式的,更像是描述的重复实例,问题是,我需要找到一种方法来获取实例的重复次数,以便在每个实例中提取一个cerinate单元,如下所示:

enter image description here

有些文件有一个实例,另一个有5个或6个实例,我尝试了一个while循环,但似乎不起作用:

import xlrd
from os import listdir, chdir

dir = chdir"r"/home/fcr/anaconda3/envs/Arch/calam")

lista = []

for arc in listdir(dir):
    x = xlrd.open_workbook(arc)
    sh = x.sheet_by_index(0)
    for r in range(4, 500, 18):
        v = sh.cell(r, 10).value
        while v != " "
            lista.append(v)

print(lista)

现在我在尝试一个if语句,在该语句中,我将总行数除以单元格之间的间隔(18),以找出重复的次数,但似乎我遗漏了一些东西

^{pr2}$

谢谢


Tags: 文件数据实例方法inimportfordir
1条回答
网友
1楼 · 发布于 2024-04-25 05:45:36

我找到了一种方法,如果对任何人都有用,可以根据工作表行循环,然后将其写入excel文件:

import xlrd
from os import listdir, chdir
from openpyxl import Workbook


dir = chdir(r"/home/fcr/anaconda3/envs/002/Arch/cal")

lista = []

for arc in listdir(dir):
    x = xlrd.open_workbook(arc)
    sh = x.sheet_by_index(0)
    ntram = sh.nrows
    for r in range(4, ntram, 18):
        call = []
        v = sh.cell(r, 10).value
        tram = sh.cell(r-1, 0).value
        cini = sh.cell(r-1, 1).value
        cterm = sh.cell(r-1, 2).value
        npist = sh.cell(r-1, 5).value
        call.append(arc.strip(".xlsx"))
        call.append(v)
        call.append(tram)
        call.append(cini)
        call.append(cterm)
        call.append(npist)
        lista.append(call)


print(lista)

columns = ["CALLE",  "IND_SERV", "TRAMO", "CALL_INI", "CALL_TER",     "NUM_PIST"]

book = Workbook()
sheet = book.active

sheet.append(columns)

for pe in lista:
    sheet.append(pe)

book.save(r"/home/fcr/anaconda3/envs/002/Arch/LisCal.xlsx")

相关问题 更多 >