Skip to content

Instantly share code, notes, and snippets.

@devniel
Last active August 29, 2015 14:24
Show Gist options
  • Select an option

  • Save devniel/46adea83a45562f78ac7 to your computer and use it in GitHub Desktop.

Select an option

Save devniel/46adea83a45562f78ac7 to your computer and use it in GitHub Desktop.
tool for hackers that are on a testing area because of a lack of projects on your company ... meh.
# -*- coding: ISO-8859-1 -*-
from openpyxl import load_workbook
from collections import *
from StringIO import StringIO
import xml.etree.ElementTree as ET
import sys
def parse(__NOMBRE_ARCHIVO_EXCEL, __NOMBRE_ARCHIVO_XML, __CELDA_INICIO, __CELDA_FIN, __CELDA_DATA_INICIO, __CELDA_DATA_FIN ):
print "NOMBRE ARCHIVO EXCEL : " + __NOMBRE_ARCHIVO_EXCEL
print "CELDA INICIO : " + __CELDA_INICIO
print "CELDA FIN : " + __CELDA_FIN
print "CELDA DATA INICIO : " + __CELDA_DATA_INICIO
print "CELDA DATA FIN : " + __CELDA_DATA_FIN
wb = load_workbook(filename = __NOMBRE_ARCHIVO_EXCEL)
ws = wb.active
celda_inicio_letra = __CELDA_INICIO[:1]
celda_inicio_numero = int(__CELDA_INICIO[1:])
celda_data_inicio_letra = __CELDA_DATA_INICIO[:1]
celda_data_inicio_numero = int(__CELDA_DATA_INICIO[1:])
celda_fin_numero = int(__CELDA_FIN[1:])
# instead of ET.fromstring(xml) // from http://stackoverflow.com/a/25920989/539783
it = ET.iterparse(__NOMBRE_ARCHIVO_XML)
for _, el in it:
if '}' in el.tag:
el.tag = el.tag.split('}', 1)[1] # strip all namespaces
root = it.root
d = defaultdict(int)
for x in range(celda_inicio_numero, celda_fin_numero):
path = str(ws[celda_inicio_letra + str(x)].value)
if path is not None:
d[path]+=1
for x in range(celda_inicio_numero, celda_fin_numero):
#print "PATH TAG CELDA " + celda_inicio_letra + " " + str(x) + " : " + str(ws[celda_inicio_letra + str(x)].value) + " -------------- \r\n"
path = str(ws[celda_inicio_letra + str(x)].value)
if path is not None:
elements = root.findall("./" + str(path))
if len(elements) > 0:
if(path == "/MFX_SvcRecaudaPag/SvcRecaudaPagRs/SvcRecaudaPagReg/SvcRecaudaPagInfo/MedioAbonoRs/StatusAdicLst/StatusAdic/StatusCod"):
print "len(elements) =======> " + str(len(elements))
print "d[path] =======> " + str(d[path])
print " ------------------------------------ "
if(len(elements) == 1):
if(elements[0].text is not None and d[path] is not -1):
ws[celda_data_inicio_letra + str(x)] = str(elements[0].text)
d[path] = -1
else:
index = len(elements)-d[path]
d[path]-=1
if(elements[index].text is not None):
ws[celda_data_inicio_letra + str(x)] = str(elements[index].text)
ws.column_dimensions[celda_data_inicio_letra].width = 100
return wb
def create_excel_with_values(_id):
ID_TRANSACCION = _id
NOMBRE_ARCHIVO_EXCEL = "test.xlsx"
NOMBRE_ARCHIVO_EXCEL_RESULTADO = ID_TRANSACCION + ".xlsx"
NOMBRE_ARCHIVO_XML = ID_TRANSACCION + ".xml"
CELDA_INICIO = "G8"
CELDA_FIN = "G171"
CELDA_DATA_INICIO = "J8"
CELDA_DATA_FIN = "J171"
wb = parse(NOMBRE_ARCHIVO_EXCEL, NOMBRE_ARCHIVO_XML, CELDA_INICIO, CELDA_FIN, CELDA_DATA_INICIO, CELDA_DATA_FIN )
wb.save(filename = NOMBRE_ARCHIVO_EXCEL_RESULTADO)
NOMBRE_ARCHIVO_XML = ID_TRANSACCION + "-response.xml"
NOMBRE_ARCHIVO_EXCEL = NOMBRE_ARCHIVO_EXCEL_RESULTADO
CELDA_INICIO = "G175"
CELDA_FIN = "G351"
CELDA_DATA_INICIO = "J175"
CELDA_DATA_FIN = "J351"
wb = parse(NOMBRE_ARCHIVO_EXCEL, NOMBRE_ARCHIVO_XML, CELDA_INICIO, CELDA_FIN, CELDA_DATA_INICIO, CELDA_DATA_FIN )
wb.save(filename = NOMBRE_ARCHIVO_EXCEL_RESULTADO)
# Gather our code in a main() function
def main():
ids = [
"c3e2d840d8f2f7f34040404040404040cf382b1a499a69d3",
"c3e2d840d8f2f7f34040404040404040cf382ca0f91475d3",
"c3e2d840d8f2f7f34040404040404040cf382cf06846b5cc",
"c3e2d840d8f2f7f34040404040404040cf382dd5b201b5d1",
"c3e2d840d8f2f7f34040404040404040cf3835d929cdbdca",
"c3e2d840d8f2f7f34040404040404040cf38359d389553ca"
]
for _id in ids:
create_excel_with_values(_id)
# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment