Last active
August 29, 2015 14:24
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- 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