Este tutorial fue evaluado por nuestros expertos para garantizar la veracidad de este ensayo.
Solución:
Usar pandas
y puedes hacerlo tan simple como esto:
import pandas as pd
df1 = pd.read_excel('excel1.xlsx')
df2 = pd.read_excel('excel2.xlsx')
difference = df1[df1!=df2]
print difference
Y el resultado se verá así:
El siguiente enfoque debería ayudarlo a comenzar:
from itertools import izip_longest
import xlrd
rb1 = xlrd.open_workbook('file1.xlsx')
rb2 = xlrd.open_workbook('file2.xlsx')
sheet1 = rb1.sheet_by_index(0)
sheet2 = rb2.sheet_by_index(0)
for rownum in range(max(sheet1.nrows, sheet2.nrows)):
if rownum < sheet1.nrows:
row_rb1 = sheet1.row_values(rownum)
row_rb2 = sheet2.row_values(rownum)
for colnum, (c1, c2) in enumerate(izip_longest(row_rb1, row_rb2)):
if c1 != c2:
print "Row Col - != ".format(rownum+1, colnum+1, c1, c2)
else:
print "Row missing".format(rownum+1)
Esto mostrará las celdas que son diferentes entre los dos archivos. Para sus dos archivos dados, esto mostrará:
Row 3 Col 2 - 0.235435 != 0.23546
Si prefiere nombres de celda, entonces use xlrd.formular.colname()
:
print "Cell != ".format(rownum+1, xlrd.formula.colname(colnum), c1, c2)
Dandote:
Cell 3B 0.235435 != 0.23546
Yo uso un código para hacer algo similar. Es un poco generalizado funciona bien. Hojas de Excel de entrada e imagen de marco de datos de salida esperada
import pandas as pd
import numpy as np
from xlsxwriter.utility import xl_rowcol_to_cell
template = pd.read_excel("template.xlsx",na_values=np.nan,header=None)
testSheet = pd.read_excel("test.xlsx",na_values=np.nan,header=None)
rt,ct = template.shape
rtest,ctest = testSheet.shape
df = pd.DataFrame(columns=['Cell_Location','BaseTemplate_Value','CurrentFile_Value'])
for rowNo in range(max(rt,rtest)):
for colNo in range(max(ct,ctest)):
# Fetching the template value at a cell
try:
template_val = template.iloc[rowNo,colNo]
except:
template_val = np.nan
# Fetching the testsheet value at a cell
try:
testSheet_val = testSheet.iloc[rowNo,colNo]
except:
testSheet_val = np.nan
# Comparing the values
if (str(template_val)!=str(testSheet_val)):
cell = xl_rowcol_to_cell(rowNo, colNo)
dfTemp = pd.DataFrame([[cell,template_val,testSheet_val]],
columns=['Cell_Location','BaseTemplate_Value','CurrentFile_Value'])
df = df.append(dfTemp)
df es el marco de datos requerido
Te invitamos a favorecer nuestro cometido fijando un comentario o valorándolo te damos la bienvenida.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)