Я беру несколько CSV-файлов с разделителями-запятыми и используя их для создания электронной таблицы XLS, в которой имена файлов становятся отдельными вкладками в электронной таблице. Код, который у меня есть, дает результаты, которые я хочу, за исключением случаев, когда открывается электронная таблица. Я получаю следующее предупреждение: «Некоторое форматирование текста может быть изменено в этом файле, поскольку максимальное количество шрифтов было превышено. Это может помочь закрыть другие документы и повторить попытку «. Я уверен, что проблема возникает из кода, пытающегося изменить формат ячеек за пределом строки 65536, но я не уверен, как ограничить изменения строк. Мне нужно не более нескольких сотен строк по четыре столбца.Как не превышать максимальное количество шрифтов при создании таблиц XLS
import csv, glob, xlwt, sys, os
csvFiles = os.path.join(LogFileFolder, "*")
wb = xlwt.Workbook()
colNames = ['iNFADS_FAC','CAT','Crosswalk_FAC','FAC']
for filename in glob.glob(csvFiles):
(f_path, f_name) = os.path.split(filename)
(f_short_name, f_extension) = os.path.splitext(f_name)
ws = wb.add_sheet(f_short_name)
with open(filename, 'rb') as csvf:
csvReader = csv.reader(csvf)
for rowx, row in enumerate(csvReader):
for colx, value in enumerate(row):
if value in colNames:
ws.write(rowx, colx, value, xlwt.easyxf(
"border: top medium, right medium, bottom double, left medium;
font: bold on; pattern: pattern solid, fore_color pale_blue;
align: vert centre, horiz centre"))
elif value not in colNames:
ws.write(rowx, colx, float(value),
xlwt.easyxf("align: vert centre, horiz centre"))
##This second "xlwt.easyxf(align...)" part is the offending section of the code, if
##I remove just that part then the problem goes away. Is there a way to keep
##it within the 65536 limit here?
else:
pass
wb.set_active_sheet = 1
outXLS = os.path.join(LogFileFolder, "FAC-CAT Code Changes.xls")
wb.save(outXLS)