Я использую Pandas для чтения файла Excel и проверки столбцов для Integer, Date и проверки значения столбца, присутствующего в Списке.
xl = pd.ExcelFile(os.path.join(os.getcwd() , "Inputfile.xlsx"))
df = xl.parse("Sheet1")
listvalues = ['list1','list2','list3']
df[errorcolumn] = df[errorcolumn] + np.where(df[listcolumn].isin(listvalues), "", "list value not valid")
df[errorcolumn] = df[errorcolumn] + np.where(df[intcolumn].dtype.kind in 'i', " int value not valid, ")
writer = pd.ExcelWriter(os.path.join(os.getcwd(), "Inputfile.xlsx"), engine='xlsxwriter')
self.df.to_excel(writer, sheet_name='Sheet1', header=True, index=False)
writer.save()
writer.close()
print("Please fix the fields mentioned in the Error column of input file to proceed")
sys.exit(1)
Ввод excel:
ID listcolumn intcolumn errorcolumn
1 list1 5 ""
2 list22 5.6 ""
3 list3 6.25 ""
Использование приведенного ниже кода для проверки только значений из списка присутствует в столбце и добавляет сообщение об ошибке для строк, которые имеют недопустимые значения,
df[errorcolumn] = df[errorcolumn] + np.where(df[listcolumn].isin(listvalues), "", "list value not valid")
Для проверки только целых чиселЯ использовал приведенный ниже код, который добавляет сообщение об ошибке в строки при обнаружении одной недопустимой строки:
df[errorcolumn] = df[errorcolumn] + np.where(df[intcolumn].dtype.kind in 'i', " int value not valid, ")
Текущий вывод Excel:
ID listcolumn intcolumn errorcolumn
1 list1 5 "int value not valid, "
2 list22 5.6 "list value not valid, int value not valid,"
3 list3 6.25 "int value not valid,"
Ожидаемый выход Excel:
ID listcolumn intcolumn errorcolumn
1 list1 5 ""
2 list22 5.6 "list value not valid, int value not valid,"
3 list3 6.25 "int value not valid,"