Forum >> Principianti >> Modulo XLRD

Pagina: 1

Ciao a tutti!

Scrivo qui perché sono disperato, a lavoro mi sono trovato a dover fare manutenzione su un programma che usa il modulo in questione.
Il programma è abbastanza semplice in se, legge un file xls con 4 colonne ed N righe, ed esegue una ricerca per nome "printando" la riga corrispondente al valore cercato.
Ora il problema è che "qualcuno" ha cancellato o incasinato il programma ( in python 2.7 ) e non riesco nemmeno più a raccapezzarmi dato che non conosco nemmeno il modulo...
Qualcuno avrebbe la 'pietà' di darmi un idea, una soluzione o un aiuto? ;(
note:
il file xls ha 4 colonne ed n' righe, è praticamente un catalogo prodotti, tramite ricerca di una parola o parte della stessa contenuta nella colonna 0 dovrei avere un output cosi:
col 0 col1 col2 col3
parola ricercata dati1 dati2 dati3
import xlrd
import time
print time.ctime()
print " "
ser = raw_input('Cosa stai cercando? ')
ser2 = str(ser)
MyFile = xlrd.open_workbook('C:\Users\USER\Desktop\Cartel1.xls')
MySheet = MyFile.sheet_by_index(0)
itemcol = MySheet.col_values(0)
listap = []
listap2 = []
    
for item in itemcol:          #valori colonna 0
        listap.append(item)   #lista valori colonna 0 non formattati
        

for item in listap:           #formattazione lista valori
 fold =str(item)
 listap2.append(fold)  #creazione lista valori formattata
 
#if any(ser2 in s for s in listap2):
#    print "si"

if any(ser in s for s in itemcol):
        
    
 
 
#----------funzionante ma non utilizzabile----------------#
#try:
    
#    if listap2.index(ser2) >= 0:
#        print"ci siamo"
#    else:
#        print 'non trovato'
#except ValueError:
#    print " "
#    print"articolo non trovato"
print " "
print'elenco fogli:', MyFile.sheet_names()
print " "
print "numero di righe nel file:", MySheet.nrows

Ciao a te, che errore ottieni?

Ho utilizzato in passato la libreria ed è piuttosto banale. Allega anche uno scarabocchio dell'xls, basta anche solo la riga d'intestazione ed una di dati.

Se posso ti aiuto volentieri.

Cya
lo sto riscrivendo da capo e ancora non ottengo quello che mi servirebbe....
praticamente si dovrebbe adattare a più tipi di file xls, ma il programma che ho provato a riscrivere va bene solo per un xls con 3 colonne, non esiste un modo per adattarlo in maniera che legga da solo i dati fino a EOF?



import xlrd
import time
from xlrd import open_workbook

def main():
    print"*--------------------------------------------------------------------*"
    print " "
    print "  ", time.ctime(), "#XXX V1.0 - Gestionale Catalogo#"
    print " "
    print"*--------------------------------------------------------------------*"
    a = None
    a = raw_input('cosa stai cercando? ')
    print " "
    xls=open_workbook('C:\Users\XXX\Desktop\Cartel1.xls')




    for sheets in xls.sheets():
        list1=[]
        for col in range(sheets.ncols):
            for rows in range(sheets.nrows):
                list1.append(sheets.cell(rows, col).value)
#print(list1)
    for i in list1:
        #print(i)
    
        list2 = []
    for col in range(sheets.ncols):
        list2.append(sheets.cell(rows, col).value)
        #print list2



    colonna1 = sheets.col(0)
    colonna2 = sheets.col(1)
    colonna3 = sheets.col(2)
#print colonna1
#print colonna2
#print colonna3
    colonnaA = []
    colonnaB = []
    colonnaC = []
    colonnaA1B = []
    colonnaB1B = []
    colonnaC1B = []

    for item in colonna1:
        colonnaA1 = str(item)
        colonnaA1B.append(colonnaA1)
    
    for item in colonna2:
        colonnaB1 = str(item)
        colonnaB1B.append(colonnaB1)
    for item in colonna3:
        colonnaC1 = str(item)
        colonnaC1B.append(colonnaC1)
#------------------------------------------------------#    



    key =  [x for x in colonnaA1B if a in x]
    for item in key:
            b = item.strip('[]')
            c = colonnaA1B.index(b)
            data1 = colonnaA1Bc
            data2 = colonnaB1Bc
            data3 = colonnaC1Bc
            #print colonnaA1Bc, colonnaB1Bc, colonnaC1Bc
            #print data1, data2, data3
            data1 = data1.strip('text:u')
            data1 = data1.strip('number:')
            data1 = data1.strip("''")
            data2 = data2.strip('text:u')
            data2 = data2.strip('number:')
            data2 = data2.strip("''")
            data3 = data3.strip('text:u')
            data3 = data3.strip('number:')
            data3 = data3.strip("''")
            print data1, data2, data3
            torna()



def torna():
    
    print " "
    x = raw_input("Cerca un altro articolo? ")
    print " "
    if x == 'y':
        main()
    else:
        esci()
    
            
    
def esci():
    print " "
    print "Ciao bello!"
    print " "
    time.sleep(3)
    print "Mi sto spegnendo..."



main()


Pagina: 1



Esegui il login per scrivere una risposta.