2

Я создал и отформатировал диаграмму, и мне нужно снова ее заполнить другими данными. Проблема: в OpenOffice Calc 4.1.1 данные диаграммы отсоединяются от исходных данных / листа, как только диаграмма копируется (Ctrl+C, Ctrl+V или также Ctrl+X, Ctrl+V). Копия диаграммы имеет свою собственную таблицу данных - и я не могу установить диапазон данных для использования в этой копии. Поскольку базовые данные будут меняться, ручное изменение таблицы данных диаграммы не является разумным решением.

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

Любые идеи кто-нибудь? Или я просто пропустил очевидное?

1 ответ1

1

А пока я придумал два возможных решения.

Решение 1 на самом деле не является ответом на вопрос: LibreOffice будет открывать ODS-файлы так же, как и OpenOffice. При копировании диаграммы в LibreOffice, копия диаграммы сохраняет ссылку на данные (протестировано с LibreOffice v.4.2.8.2 под Linux). Это работает только в том случае, если имена всех рядов данных были установлены с помощью ссылки на ячейку таблицы (или не заданы вообще), а не фиксированной строкой.

Решение 2 состоит в том, чтобы редактировать ODS-файл напрямую, что очень удобно для небольшого числа графиков. Я вошел в файл, изменил дерево XML и был слегка удивлен, что сработало следующее:

  1. Создайте копию файла ODS и измените расширение на ZIP
  2. Извлечь content.xml
  3. Найдите правильный лист (поместите некоторый уникальный текст перед диаграммой, чтобы быстро найти его) и найдите диаграмму (см. Ниже).
  4. Скопируйте узел <draw:frame> дерева XML.
  5. Сохраните content.xml и реинтегрируйте в ZIP-файл, восстановите расширение ODS.
  6. Откройте файл в OpenOffice.
  7. Теперь у вас будет две копии диаграммы в одной и той же позиции - перетащите одну в другую позицию и отредактируйте диапазон данных.

Диаграмма в файле content.xml выглядит следующим образом:

<draw:frame ...><draw:object ...><text:p/></draw:object><draw:image .../></draw:frame>

Предупреждение: копирование <draw:frame> без копирования связанных ресурсов может привести к несогласованности файла. Всегда работайте с копией. OpenOffice, кажется, автоматически копирует ресурсы - но я проверял это только для самых последних диаграмм, которые были созданы в файле.

Примечание: более простые решения (возможно, в рамках OpenOffice), конечно, все еще приветствуются.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .