Импорт данных в Excel с использованием Python - PullRequest
0 голосов
/ 24 октября 2018

В этом коде я импортировал данные из таблицы Excel с именем «электронные письма» в два списка:

a.list1

b.list2

работал с этими данными и сохранял эти данные в двух последних списках:

a.final_list1

b.final_list2

теперь я хочу сохранить данные, представленные в этих двух окончательных списках, в одном файле Excel на новом листе, что я не могу сделать. Пожалуйста, помогите мне с этим

Код не работаетпосле печати (final_list2)

import xlrd
import xlwt
file_location = "E:/emails.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
list1 = [sheet.cell_value(r,0) for r in range(sheet.nrows)]
type(list1)
for r in range(sheet.nrows):
        print(list1[r])

final_list1 = [] 
for num in list1:
    if num not in final_list1:
        final_list1.append(num)
print(final_list1)

list2 = [sheet.cell_value(r,1) for r in range(sheet.nrows)]
type(list2)
for r in range(sheet.nrows):
        print(list2[r])

final_list2 = [] 
for num in list2:
    if num not in final_list2:
        final_list2.append(num)
print(final_list2)


final_list2 = [elem for elem in final_list2 if elem not in final_list1 ]
print(final_list2)




book = xlwt.Workbook(encoding="utf-8")
sh = book.add_sheet("sh")
i=1
for r in range(10):
    for col_index, item in enumerate(final_list2):
        sh.write(i, col_index, item)      
book.save("emails.xlsx")

Ошибка:

    ---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-38-740af0fd38c9> in <module>()
     35 for r in range(10):
     36     for col_index, item in enumerate(final_list2):
---> 37         sh.write(i, col_index, item)
     38 book.save("emails.xlsx")

~\Anaconda3\lib\site-packages\xlwt\Worksheet.py in write(self, r, c, label, style)
   1086            :class:`~xlwt.Style.XFStyle` object.
   1087         """
-> 1088         self.row(r).write(c, label, style)
   1089 
   1090     def write_rich_text(self, r, c, rich_text_list, style=Style.default_style):

~\Anaconda3\lib\site-packages\xlwt\Row.py in write(self, col, label, style)
    233             if len(label) > 0:
    234                 self.insert_cell(col,
--> 235                     StrCell(self.__idx, col, style_index, self.__parent_wb.add_str(label))
    236                     )
    237             else:

~\Anaconda3\lib\site-packages\xlwt\Row.py in insert_cell(self, col_index, cell_obj)
    152                 msg = "Attempt to overwrite cell: sheetname=%r rowx=%d colx=%d" \
    153                     % (self.__parent.name, self.__idx, col_index)
--> 154                 raise Exception(msg)
    155             prev_cell_obj = self.__cells[col_index]
    156             sst_idx = getattr(prev_cell_obj, 'sst_idx', None)

Exception: Attempt to overwrite cell: sheetname='sh' rowx=1 colx=0

1 Ответ

0 голосов
/ 24 октября 2018

РЕДАКТИРОВАТЬ:

Предполагается, что библиотека xlwt должна использоваться только со старыми файлами Excel (.xls), так что это может стать причиной вашей проблемы.См. docs

xlwt - библиотека для записи данных и форматирования информации в более старые файлы Excel (т. Е. .Xls)


КажетсяНапример, проблема в том, что лист sh уже существует, поэтому вы не можете его добавить.Попробуйте дать ему имя листа, которого еще не существует, или используйте add_sheet("sh", true), который перезапишет лист.

См. https://xlwt.readthedocs.io/en/latest/api.html?highlight=add для получения дополнительной информации.

...