Непосредственные точки:
формат .xls двоичного кода, так что вы должны использовать: (. Или fconfigure $Channel_Read -translation binary
сразу после открытия, это эквивалентно)
set Channel_Read [open "Sample.xls" rb]
Аналогично , если вы сбрасываете его в другой файл, используя a+b
в качестве открытого режима для этого - по тем же причинам - прекратит работу с файлами.
Для прямой копии с одного канала на другой используйте fcopy
вместо цикла. Команда fcopy
использует некоторые низкоуровневые трюки, чтобы делать что-то более эффективно.
fcopy $Channel_Read $Channel_Write
Однако, я действительно подозреваю, что что-то происходит, кроме непосредственно раскрывается в информации, которую вы предоставляете. Tcl не манипулирует байтами так, как вы описываете (я знаю, что делает механизм кодирования, и это не работает для какой-либо кодировки). Более того, концепция «линии» по отношению к электронной таблице отчетливо исключена; в таблицах нет строк, у них есть строки (и столбцы и листы), и они не обязательно должны быть организованы одинаково. Я также не понимаю, почему добавление бинарной таблицы в другой файл было бы неплохо.
Я думаю, вам нужно остановиться, подумать о более широкой задаче, которую вы пытаетесь сделать, а затем попытаться решить эту проблему, а не только эту маленькую штуку. Хотя я мог бы ответить на ваши ближайшие вопросы более подробно, я подозреваю, что не буду давать вам действительно полезный помощь, если я это сделал.
Вы не можете читать .xls-файл по строке 'gets'. Это запатентованный двоичный формат - вам нужен специальный парсер. –
Возможно, вас заинтересует [этот gitrepo] (https://github.com/willblatt/excelScl). Я сам не пробовал, но выглядит многообещающе. – Jerry