Я использую библиотеку python olefile для изменения файлов .xls и .doc. Интересный факт: приведенный ниже код работает для файлов .xls, но не для файлов .doc.
Каким-то образом .doc кодирует / обрабатывает свое содержимое по-разному. В .xls при печати raw_content
я вижу много странных байтов, но также и полные слова.
В файле .doc я вижу еще много \x00
, и полные слова похожи на \x00
между каждым символом.
Также странно, olefile docs предлагают сделать это так, даже говоря о слове, в связанном примере.
file = open('my.doc', 'rb')
ole = olefile.OleFileIO(file.read())
raw_content = ole.openstream('WordDocument').read()
raw_content= raw_content.replace(
b'a-placeholder',
bytes(dynamic_value, 'utf-8') # made sure they are the same length!
)
# this works!
# raw_content= raw_content.replace(
# b'a',
# b'Z'
# )
ole.write_stream('WordDocument', raw_content)
ole.fp.seek(0)
file_contents = ole.fp.read()
# further processing...