Если вы в качестве офисного пакета используете OpenOffice или LibraOffice, то скорей всего вам уже приходилось когда-нибудь сталкиваться с такой проблемой, как повреждение файла. То есть, вчера вы его ещё без проблем правили, ну а сегодня, как только запускаете, появляется ошибка «Ошибка считывания» или «Ошибка формата файла в поддокументе».

Конечно же, я не утверждаю, что в офисном пакете от Майкрософт подобного не встречается, нет, просто эта статья будет направленна на восстановление документа, который был создан именно в LibreOffice и имеет разрешение ods, odf или odt.

По появившемуся уведомление можно понять, что, например, в файле content.xml была обнаружена ошибка в такой-то строчке и в таком-то столбце, которую нам в принципе и нужно исправить.

Я, конечно же понимаю, что обычному пользователю будет сложно найти в коде проблему и быстро исправить её, но я попытаюсь подробно описать вам, как мне это удалось, возможно и вам, так же, повезёт. Поэтому, давайте-ка посмотрим же, как можно восстановить документ и избавиться от ошибки: «Ошибка формата файла…».

Исправление ошибки формата файла в поддокументе

[adsense1]

Начну с того, что для восстановления документа нам понадобится, как минимум два инструмента:

  • Архиватор – лично я использовал 7zip, но можно взять и WinRaR, принципиальной разницы тут нет.
  • Текстовый редактор – тут рекомендую обратить свое внимание на очень мощный и удобный «notepad++», там код подсвечивается, поэтому будет удобно искать ошибку из-за которой повредился файл.

Итак, для восстановления файла нам необходимо найти поврежденный файл и открыть его с помощью архива.

Открыть документ в архиве

Далее, находим в архиве поврежденный файл (в рассмотренном здесь примере это content.xml) и перетягиваем его, например, на тот же рабочий стол.

Копирование content.xml

Открываем content.xml с помощью notepad++ и в появившемся коде ищем строки и столбцы в которых была обнаружена ошибка (Например, строка: 245 и столбец: 25).

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

Например: <text:p>text_in_document<|text:p> — тут видно, что ошибка связанна с закрывающимся тегом и поэтому нужно поменять его так, что бы получилось <text:p>text_in_document</text:p>.

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

Вот и все, после чего проверяем получилось ли восстановить документ.

Поиск ошибки в поврежденном файле odt

[adsense2]

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

Вот, например, как здесь:

Ошибка формата файла в поддокументе

Как видите тут проблема была найдена в файле content.xml, строка: 2 и столбец: 48964.

Итак, открыв поврежденный документ в архиве, вытаскиваем с него файлик content.xml и открываем его в notepad++.

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

Устанавливаем курсор на вторую строку и для того, чтобы не высчитывать каждый символ, в низу окна интерфейса notepad++ нажимаем на параметр «Ln/Col». Появится окошко, с помощью которого мы сможем переместиться к необходимому символу.

Переходим к нужному символу

В нем нужно установить отметку на «Символ» и в пустом поле указать необходимое значение, в данном примере это 48964, после просто нажать «Вперед!».

Окошко должно пропасть, ну а ваш курсор переместится на нужный столбец с ошибкой.

Как видите, у меня проблемным тегом оказался fo:background-color="transparent", но в принципе явных ошибок тут нет, поэтому очень сложно сказать, что же не так.

Атрибут с ошибкой

В таком случае, я решил, обратиться к сервису xmlvalidation.com для более глубокого анализа нашего поврежденного xml файла.

Перейдя на сайт, опускаемся чуть ниже и щелкаем по кнопке «Обзор», находим и загружаем content.xml и нажимаем «Validate».

После чего должен появиться отчет, в каком месте была найдена ошибка и что именно является ее причиной. В случае данного примера, можно понять, что ошибка формата файла была вызвана тем, что параметры атрибута background-color уже был указан для элемента «style:text-properties».

Проверка xml файла

Как я писал выше в notepad++ ошибка была найдена в атрибуте fo:background-color="transparent". Ну, а спустившись в отчете чуть ниже, непосредственно к самому коду, мы увидим, что тут проблемным местом является fo:background-color="#ffffff".

Элемент с ошибкой

То есть, как вы поняли в одной строке style:text-properties было указанно два значения для fo:background-color.

Исходя из этого, я решил, удалить в один атрибут, а именно fo:background-color="transparent" .

Удалить атрибут

После чего я сохранил content.xml и перетащил его обратно в архив.

Но, в результате появилась ошибка формата файла в поддокументе уже в другом столбце.

Ошибка считывания

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

Вот так мне и удалось восстановить поврежденный odt файл.

Я, конечно же понимаю, что вероятность того, что вам может попасться такая же ошибка очень мала, но поймите — это не универсальное руководство, а только пример того, как мне удалось справиться с данной проблемой.

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

Ещё раз напомню, порядок исправления такой:

  1. Открываем поврежденный документ в архиве.
  2. Извлекаем content.xml.
  3. Загружаем его для проверки в xmlvalidation.
  4. И уже в полученном отчете нужно найти причину ошибки и исправить её.
  5. После чего сохраняем xml файл и загружаем обратно его в архив.

Если коротко, то примерно вот так оно должно выглядеть.

В общем, удачи вам в борьбе с ошибкой формата файла в поддокументе и, конечно же, я верю, что у вас точно всё получится.

Исправление «Ошибки формата файла в поддокументе» в LibreOffice и OpenOffice
Метки:

Исправление «Ошибки формата файла в поддокументе» в LibreOffice и OpenOffice: 10 комментариев

  • 26.08.2018 в 12:47
    Ссылка на коментарий

    Вот вы пишете: «Далее, находим в архиве поврежденный файл (в рассмотренном здесь примере это content.xml) и перетягиваем его, например, на тот же рабочий стол.» А как найти поврежденный файл? там куча папок и файлов, в том числе и content.xml. Может быть у меня поврежден другой файл? как определить?

    Ответить
    • 02.10.2018 в 14:14
      Ссылка на коментарий

      Обычно при появление ошибки, в её описание, указывается какой поддокумент поврежден и на какой строчке была обнаружена ошибка.

      Ответить
  • 29.06.2018 в 18:24
    Ссылка на коментарий

    все ваши советы не сработают, так как перетащить из архива файл ___content.xml не получится------Архиватор не даст, тк. архив и файл этот поврежден вот скрин prntscr.com/k0vhib Вот интересно для кого вывсе это писали ??? Для полных ламеров ??

    Ответить
  • 22.11.2017 в 00:11
    Ссылка на коментарий

    Вы так все круто описали, но у меня совсем ничего не получилось... А мне очень нужно восстановить поврежденный файл 🙁 Не могли бы вы мне помочь?

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован.