Код для написания каждого файла отлично работает. Проблема, с которой я столкнулась, заключается в том, что часть проверки данных, похоже, ничего не делает. Никакие выпадающие списки не создаются в диапазоне, на который я ссылаюсь.Проверка данных с помощью 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)
я могу спросить, почему вы импортируете внутри цикла? –
Похоже, вы можете повторно перезаписать тот же файл. Я предлагаю вам попробовать соответствующий код с помощью простого файла Excel. –
Dmitry - Я создаю индивидуальные файлы excel для каждого идентификатора пользователя в файле csv (обычно я бы перебирал все уникальные идентификаторы пользователя, но этот запрос был для подмножества пользователей). Прокрутка по списку, казалось, была наиболее эффективным способом сделать это – mdl003