2017-02-17 2 views
0

실제로 각 파일을 쓰는 코드는 훌륭하게 실행됩니다. 문제는 데이터 유효성 검사가 아무 것도하지 않는 것 같습니다. 참조하는 범위에서 드롭 다운이 생성되지 않습니다.openpyxl을 사용한 데이터 유효성 검사는 파일에 쓰지 않습니다.

미리 도움을 청하십시오! 기본 시트

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

동일한 파일을 반복적으로 덮어 쓰는 것처럼 보입니다. 나는 당신이 간단한 엑셀 파일과 관련 코드를 시도하는 것이 좋습니다. –

+0

Dmitry - CSV 파일 내의 각 사용자 ID에 대해 개별 Excel 파일을 만듭니다 (일반적으로 모든 고유 사용자 ID를 반복하지만이 요청은 사용자의 하위 집합에 대한 것임). 목록을 반복하는 것이 가장 효율적인 방법 인 것 같습니다. – mdl003

답변

0

**에 대한

%%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 

코드 당신은 worksheetdv을 추가 누락되었습니다. 당신은 루프 내에서 가져 오는 이유

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

Reread the docs validation

+0

좋았어. 어떤 이유로 든 드롭 다운이 표시되지 않지만 유효성 검사가 작동합니다. 감사 – mdl003

관련 문제