Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 11, 2018 08:52:05

Solos
Зарегистрирован: 2018-04-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при записи в таблицу Excel

Добрый день,
Имеется OPC-сервер с набором данных:
<переменная1> <значение>
<переменная2> <значение>
<переменная3> <значение>


С помощью Python'а записываю эти данные в Excel

 data = opc.read(vals) #список vals содержит имена нужных переменных
i = 1
for new_data in data:
    sheet_data['A'+str(i)].value = new_data[0]
    sheet_data['B'+str(i)].value = new_data[1]
    i = i + 1
data_wb.save('E:\Python\Test.xlsx')

Когда цикл доходит до переменной <переменная7> и пытается записать значение этой переменной в ячейку появляется следующее сообщение об ошибке:

 Traceback (most recent call last):
  File "E:\Python\Prj\Bot\bot.py", line 74, in <module>
    sheet_data['B'+str(i)].value = new_data[1]
  File "E:\Python\Phyton279\lib\site-packages\openpyxl\cell\cell.py", line 299, in value
    self._bind_value(value)
  File "E:\Python\Phyton279\lib\site-packages\openpyxl\cell\cell.py", line 196, in _bind_value
    value = self.check_string(value)
  File "E:\Python\Phyton279\lib\site-packages\openpyxl\cell\cell.py", line 160, in check_string
    raise IllegalCharacterError
IllegalCharacterError

Просматривая данные на OPC-сервере, значение <переменной7> указано как пустое, т.е. “”, но переменных с таким значений несколько и с ними проблем нет.

Попробовал вывести значение этой переменной в питоне с указанием типа, получилось:

 print type(new_data[1])
print ('!!!-',new_data[1])
<type 'unicode'>
('!!!-', u'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')

Остальные “пустые” переменные выдают “”.

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

Python 2.7.9, библиотека Excel'я openpyxl

Офлайн

#2 Апрель 11, 2018 09:42:37

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Ошибка при записи в таблицу Excel

Solos
Подскажите, как записать это значение в Excel.
Никак. Вам же модуль ясно говорит что такие значения в exel невозможно сохранить.
можете использовать try…except и записать вместо этого значения например строку “незаписуемое в exel значение”.



Офлайн

#3 Апрель 11, 2018 09:59:05

Solos
Зарегистрирован: 2018-04-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при записи в таблицу Excel

Спасибо, только начал осваивать Python, не знал про такую функцию.
Прочитал про нее. Не нашел аргумент именно под свой случай, не хотелось бы пропускать все ошибки.

Отредактировано Solos (Апрель 11, 2018 09:59:20)

Офлайн

#4 Апрель 11, 2018 13:32:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Ошибка при записи в таблицу Excel

Solos
Не нашел аргумент именно под свой случай, не хотелось бы пропускать все ошибки.
ну оно ж вам выдало IllegalCharacterError вот и пишите
 try:
    .... пишем в таблицу данные
except IllegalCharacterError:
   ... пищем в таблицу "не могу обработать эту херню"



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 11, 2018 13:32:46)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version