Если существует присвоение переменной в данной области, переменная является локальной для этой области. Если это назначение является условным, и вы можете запустить свой код так, как это никогда не происходит (или на него ссылаются в этой области после назначения), вы получите именно это исключение. Меньший пример того же:
def f():
if False:
a = 1
print(a)
a = 1
f()
И обязательный FAQ ссылка .
+1 для xlwt. См. блог Matt Harrison для сообщений о том, как использовать xlwt и как иметь дело с большими электронными таблицами. Кроме того, проверьте группу Excel Python на Google "If you use Python to read, write or otherwise manipulate Excel files".
Я использовал бы JExcelApi, но только потому, что я использовал его прежде. Никогда не касались HSSF. Самым большим выставочным стопором, который я могу вспомнить, является JExcelApi, не поддерживает несколько форматов в одной ячейке (например, половина текста полужирным, другой половины в курсиве или чем-то как этот). Я думаю в общем JExcelApi, более ограничено, чем HSSF, но ограничения никогда не стояли на пути.
И да, документация редка для интерфейса (и не существует для базовых механизмов), но я думал, что это было выполнимо...
Excel выставляет ту же автоматизацию OLE API, привыкший VBA к чему-либо, что поддерживает COM. Можно использовать win32com (который включен с ActiveState Python по умолчанию) управлять электронными таблицами почти таким же способом, которым Вы сделали бы в VBA.
Я лично не рекомендую JExcel, если вы намереваетесь использовать что-то большее, чем простой текст, чтобы преуспеть, и наоборот.
, более продвинутые функции сильно абстрагируются от базового (в основном недокументированного) низкоуровневого кода / (задокументированных) спецификаций Excel.
Другая проблема, с которой мы столкнулись, - это фатальный сбой jexcel при обнаружении недопустимых формул. и если вам нужно проанализировать предоставленные клиентом электронные таблицы, это станет проблемой.
также новая версия POI поддерживает (почти) незначительную одновременную поддержку xls и xlsx.