Постраничная запись(строк) в Excel или NotImplementedError - Python

Узнай цену своей работы

Формулировка задачи:

И так есть парсер который ищёт информацию по артиклям , поскольку муторно писать проверку на валидность инфы , делаем это руцями. И вот что мы имеем парсер который по строке вписывает в файлик данные ,желательно Excel но не принципиально , подумываю о csv. Вот код
Листинг программы
  1. def get_page_data(html):
  2. fi = get_img(html)
  3. gi = fi[37:]
  4. tf = ''
  5. group = 'Люстри'
  6. country = 'Чехія'
  7. design = 'класичний'
  8. soup = BeautifulSoup(html.text)
  9. info = soup.find('div', class_='catalog_hr')#.find_all('b')[5].text
  10. tovname = soup.find('div', class_='catalog_tovname').find('a').text
  11. index = re.findall('(\d+)', tovname)[0]
  12. datas = []
  13. for ad in info:
  14. cols = info.find_all('b')
  15. datas.append({'index': index,
  16. 'name': tf,
  17. 'group': group,
  18. 'description': tf,
  19. 'maker': cols[12].text,
  20. 'country': country,
  21. 'design': design,
  22. 'lamp': cols[4].__str__().split('x')[0].split('<b>')[1],
  23. 'socle': cols[4].__str__().split('x')[1].split('</b>')[0],
  24. 'color_lamp': cols[9].text,
  25. 'type_lamp': cols[10].text,
  26. 'color_stl': cols[7].text,
  27. 'type_stl': cols[8].text,
  28. 'heightm': cols[2].text,
  29. 'width': cols[3].text,
  30. 'depth': cols[2].text,
  31. 'photo': gi})
  32. return datas
  33.  
  34. def write_excel(datas):
  35. rb = open_workbook('./trybla.xls', formatting_info = True)
  36. r_sheet = rb.sheet_by_index(0)
  37. wb = copy(rb)
  38. w_sheet = wb.get_sheet(0)
  39.  
  40. fields = ('index', 'name', 'group',
  41. 'description', 'maker','country',
  42. 'design', 'lamp', 'socle', 'color_lamp',
  43. 'type_lamp','color_stl','type_stl',
  44. 'heightm','width','depth', 'photo')
  45. for row, data in enumerate(datas, start=1):
  46. #print(row)
  47. #print(data)
  48. for col, field in enumerate(fields):
  49. #print(col)
  50. #print(field)
  51. w_sheet.write(r_sheet.nrows, col, data[field])
  52. wb.save('./trybla.xls' + '.out' + os.path.splitext('./trybla.xls')[-1])
Вот ошибка
Листинг программы
  1. Traceback (most recent call last):
  2. File "C:/Users/игор/Desktop/4Wscript/test.py", line 142, in <module>
  3. main()
  4. File "C:/Users/игор/Desktop/4Wscript/test.py", line 139, in main
  5. write_excel(datas)
  6. File "C:/Users/игор/Desktop/4Wscript/test.py", line 111, in write_excel
  7. rb = open_workbook('./trybla.xls', formatting_info = True)
  8. File "C:\Users\Anaconda\lib\site-packages\xlrd\__init__.py", line 143, in open_workbook
  9. ragged_rows=ragged_rows,
  10. File "C:\Users\Anaconda\lib\site-packages\xlrd\xlsx.py", line 794, in open_workbook_2007_xml
  11. raise NotImplementedError("formatting_info=True not yet implemented")
  12. NotImplementedError: formatting_info=True not yet implemented
Во первых я даже не понимаю из-за чего эта ошибка вылетает. В интернете нашёл это

is only working for xls-files, but not for xlsx yet (Version xlrd-0.8.0).

но смена расширения ничего не дала . Любые советы или наблюдения приветствуются
Всем снова привет, вообщем проблему записи я решил таким образом. Код был
Листинг программы
  1. def write_excel(datas):
  2. rb = open_workbook('./trybla.xls', formatting_info = True)
  3. ....
  4. wb.save('./trybla.xls' + '.out' + os.path.splitext('./trybla.xls')[-1])
Код стал
Листинг программы
  1. def write_excel(datas):
  2. rb = open_workbook('./trybla.xls')
  3. ....
  4. wb.save('./trybla.xls')
Но вопрос

NotImplementedError

остаётся актуальным. Если у вас есть какие-то соображения на этот счёт , почему ошибка выскакивает или с чем может быть связана , буду рад любой информации.

Решение задачи: «Постраничная запись(строк) в Excel или NotImplementedError»

textual
Листинг программы
  1. def export_excel(filename , datas):
  2.     workbook = xlsxwriter.Workbook(filename)
  3.     worksheet = workbook.add_worksheet()
  4.  
  5.     field_names =
  6.  
  7.     for i ,field in enumerate(field_names):
  8.         worksheet.write(0, i, field)
  9.  
  10.     fields = ('index', 'name', 'group',
  11.      'description', 'maker','country',
  12.      'design', 'lamp', 'socle', 'color_lamp',
  13.      'type_lamp','color_stl','type_stl',
  14.      'heightm','width','depth','photo')
  15.     for row, data in enumerate(datas, start=1):
  16.         for col, field in enumerate(fields):
  17.             worksheet.write(row, col, data[field])
  18.  
  19.     workbook.close()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы