En este ejemplo, en mi hoja de calculo tengo una columna donde quiero insertar hipervinculos y poner como referencia la palabra "documents"
import os, re, traceback from win32com import client try: #Rutas de archivos y posiciones de referencia pathServidor = '//servidor/' pathReporte= 'C:/reporte.xls' columaPedidos = "C" #en que columna se encuentran los numeros de pedido primeraFilaPedidos = "8" #la primera fila de los pedidos #crear listado con los numeros de pedido (solo el primer PL en caso de haber multiples) pedidos = [] xl = client.Dispatch("Excel.Application") #itera por cada hoja del reporte for sheetNumber in range(1,5): reporte = xl.workbooks.open(pathReporte) lastRow = reporte.Sheets(sheetNumber).usedrange.rows.count #ultima fila del reporte for c in reporte.Sheets(sheetNumber).Range(columaPedidos+primeraFilaPedidos, columaPedidos+str(lastRow)): #itera por cada celda de pedidos pedido = unicode(c.value) #elimina los dahses del pedido y agrega solo el primer pl al listado if "/" in pedido: pedidos.append(pedido.split("/")[0]) else: pedidos.append(pedido.split()[0]) #itera por cada numero de pedido en el listado #tomar el path al servidor y combinarlos con cada numero de pedido #ver si el path que resulta existe en el servidor #si el path existe busca el numero de pedido en el reporte #ubicado el pedido, inserta hipervinculo en la columna N n= len(pedidos) for pedido in pedidos: if os.path.exists(pathServidor+pedido): #si existe el file path for sheetNumber in range(1,5): #itera por cada hoja if reporte.Sheets(sheetNumber).usedrange.find(pedido): #busca el pedido en cada hoja print "\rArchivando %s en %s, %i files remaining." %(pedido, reporte.Sheets(sheetNumber).Name,(n-1)), print " ", #sys.stdout.flush() documentsColumn = reporte.Sheets(sheetNumber).usedrange.find("Documents").Column #ubica la columna de documentos pedidoRow = reporte.Sheets(sheetNumber).usedrange.find(pedido).Row hyperlinkCell = reporte.Sheets(sheetNumber).Cells(pedidoRow,documentsColumn)#encuentra la celda donde insertar el hipervinculo hyperlinkPath = pathServidor+pedido #crea el path del hipervinculo reporte.Sheets(sheetNumber).Hyperlinks.Add(hyperlinkCell, hyperlinkPath,"","","documents") #print "Archivado." break #print "\rFiles Remaining... %i" %(n-1), #sys.stdout.flush() n-=1 reporte.Save reporte.Close except: traceback.print_exc() print "Terminado." raw_input()
No hay comentarios:
Publicar un comentario