python xlrd - 循环遍历excel单元格以查找数据范围

时间:2017-12-28 20:52:03

标签: python excel xlrd

我试图找到一种从excel文件列表中提取数据的方法,我已经能够加载工作簿,选择工作表并从某个单元格中提取,但我&#39 ; m有问题,因为文件没有格式化数据库,更像是重复描述的实例,事情是,我需要找到一种方法来获取实例的重复次数,以提取每个类似的东西,如这样:

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,找到重复次数,但似乎我遗漏了某些东西

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)
    tram = int(sh.rows/17)
    c3 = []
    if tram > 1 and tram < 2:
        v = sh.cell(4, 10).value
        c3.append(v)
    if tram > 2 and tram < 3:
        v = sh.cell(4, 10).value
        j = sh.cell(22, 10).value
        c3.append(v)
        c3.append(j)
    if tram > 3 and tram < 4:
        v = sh.cell(4, 10).value
        j = sh.cell(22, 10).value
        h = sh.cell(40, 10).value
        c3.append(v)
        c3.append(j)
        c3.append(h)
    else:
        print("x")
    print(c3)

由于

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,如果它对任何人都有用,根据工作表行循环,然后将其写入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")