Найти - Пользователи
Полная версия: Ошибка при записи в таблицу Excel
Начало » Python для новичков » Ошибка при записи в таблицу Excel
1
Solos
Добрый день,
Имеется 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
doza_and
Solos
Подскажите, как записать это значение в Excel.
Никак. Вам же модуль ясно говорит что такие значения в exel невозможно сохранить.
можете использовать try…except и записать вместо этого значения например строку “незаписуемое в exel значение”.
Solos
Спасибо, только начал осваивать Python, не знал про такую функцию.
Прочитал про нее. Не нашел аргумент именно под свой случай, не хотелось бы пропускать все ошибки.
PEHDOM
Solos
Не нашел аргумент именно под свой случай, не хотелось бы пропускать все ошибки.
ну оно ж вам выдало IllegalCharacterError вот и пишите
 try:
    .... пишем в таблицу данные
except IllegalCharacterError:
   ... пищем в таблицу "не могу обработать эту херню"
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB