2017-02-17 17 views
0

Код для написания каждого файла отлично работает. Проблема, с которой я столкнулась, заключается в том, что часть проверки данных, похоже, ничего не делает. Никакие выпадающие списки не создаются в диапазоне, на который я ссылаюсь.Проверка данных с помощью openpyxl не записывается в файл - код прилагается

Заранее благодарим за любую помощь!

%%time 

import pandas as pd 
import xlsxwriter as ew 
import csv as csv 
import os 
import glob 
import openpyxl 

#remove existing files from directory 
files = glob.glob(#filename) 
for f in files: 
    os.remove(f) 

pendpath = #filename 
df = pd.read_sas(pendpath) 

allusers = df.UserID_NB.unique() 
listuserpath = #filename 
listusers = pd.read_csv(listuserpath) 

listusers = listusers['USER_ID'].apply(lambda x: str(x).strip()) 

for id in listusers: 
    x = df.loc[df['UserID_NB']==id] 
    path = #filename 
    x.to_excel(path, sheet_name = str(id), index = False) 

    from openpyxl import load_workbook 

    wb = openpyxl.load_workbook(filename = path) 
    sheet = wb.get_sheet_by_name(str(id)) 
    maxrow = sheet.max_row  

    from openpyxl.worksheet.datavalidation import DataValidation 

    dv = DataValidation(type="list", formula1='"Yes,No"', allow_blank=False, showDropDown = True) 
    rangevar = 'R1:T'+ str(maxrow) 
    dv.ranges.append(rangevar) 
    wb.save(path) 
    print str(id), rangevar 

Код для базового листа

import openpyxl 

wb = openpyxl.Workbook() 
ws = wb.active 
sheet.title = 'testsheet' 

path = '#filepath' 
from openpyxl.worksheet.datavalidation import DataValidation 

dv = DataValidation(type="list", formula1='"Yes,No"', allow_blank=False, showDropDown = True) 
dv.ranges.append('A1') 
wb.save(path) 
+0

я могу спросить, почему вы импортируете внутри цикла? –

+1

Похоже, вы можете повторно перезаписать тот же файл. Я предлагаю вам попробовать соответствующий код с помощью простого файла Excel. –

+0

Dmitry - Я создаю индивидуальные файлы excel для каждого идентификатора пользователя в файле csv (обычно я бы перебирал все уникальные идентификаторы пользователя, но этот запрос был для подмножества пользователей). Прокрутка по списку, казалось, была наиболее эффективным способом сделать это – mdl003

ответ

0

** У вас не хватает, чтобы добавить dv к worksheet.

>>> # Add the data-validation object to the worksheet 
>>> ws.add_data_validation(dv) 

Reread the docs validation

+0

Ницца, это сработало. По какой-то причине он не показывает выпадающие списки, но часть проверки работает. благодаря – mdl003

 Смежные вопросы

  • Нет связанных вопросов^_^