2010-08-19 4 views
2

В настоящее время я пишу процесс, который программно генерирует отчеты Powerpoint из заданного шаблона с использованием библиотеки MSXML через VBScript. Единственное манипулирование XML, которое я делаю, - это дублировать слайды, вставлять данные в таблицы данных Excel для диаграмм и пару текстовых замеров на основе текста. Я тестирую 2 шаблона, которые идентичны в плане графиков, но отличаются стилями и макетами. Один из шаблонов дают мне рабочий файл вывод PPTX в то время как другие показывает эту ошибку при открытии:Исправление ошибок Powerpoint 2007 XML

Powerpoint error

Теперь то, что я хочу знать, что это лучший/простой способ найти причину этой ошибки? Я попытался различить XML между шаблоном, выводом и исправленным выходом Powerpoint, но различия встречаются во многих разных местах во многих разных файлах, что очень длительный процесс. Есть ли инструменты проверки/проверки, которые могли бы помочь мне здесь? Я проверил XML по сравнению с схемами, но XML кажется действительным.

Я не могу перейти на такие инструменты, как Microsoft OpenXML SDK для .NET, и этот процесс должен быть реализован в процессе VBScript/MSXML, который я использую в настоящее время.

+1

Эта ошибка связана исключительно с неверным XML. Если вы отредактируете свой ответ, чтобы показать результат в областях, которые вы добавили в тот, который работает, и тот, который этого не делает, достаточно просто рассказать, где проблема. Однако, похоже, что вы делаете ряд изменений (Excel, дублирование слайдов и обновление текста). Я бы рекомендовал делать по одному за раз, чтобы проверить, какое обновление вызывает проблему, а затем опубликовать этот код/​​XML. –

+0

не совсем: я делаю * точно * те же изменения для обоих входных презентаций, поэтому показ только областей, которые я изменил, не поможет мне – 2010-08-20 07:43:12

+0

Хорошо, если вы подтвердите, что они * точно такие же *, то возможно только ответ: вы вручную развращаете файл после написания вашего кода, например, вы открываете сохраненный .pptx как .zip и добавляете/редактируете/удаляете что-то вручную. Это * только * способ, которым он был бы поврежден, если ваш код не делает этого, и вы говорите, что ваш код этого не делает. Если вы захотите устранить это из-за того, что ваше предположение может быть неправильным, я с удовольствием помогу - я очень, очень хорошо разбираюсь в PresentationML и DrawingML. –

ответ

4

Для базовой проверки документов Open XML вы можете использовать Open XML SDK. Смотрите эти две ссылки в качестве начала:

Для проверки без SDK, это делается в основном вручную. Большинство ошибок в PowerPoint относятся к:

  1. Несоответствие между макетом слайдов и макет главной слайдов. < - этот более распространенный при письме на разные шаблоны.
  2. Соотношение сторон (rId) не соответствует .
  3. Неправильные записи в [Content_Types] .xml.

Один из способов - выбрать «Ремонт» на недействительной слайдовой колоде, а затем сохранить отремонтированную колоду с другим именем. Затем вы можете использовать инструмент DiffOPC для работы с отремонтированным, а другой с ошибками, чтобы попытаться определить, что было отремонтировано - это, как правило, будет отличным показателем того, что было в первую очередь неправильным.

+0

спасибо за ваш вклад, но я не могу пометить это как ответ, потому что в моем первоначальном вопросе утверждается, что я не могу использовать SDK. Это связано с тем, что у меня нет доступа к недавнему компилятору .NET. Я быстро взглянул на вашу первую ссылку, похоже на достижение того же результата, что и просто проверка XML в отношении схем, которые я уже делаю, используя библиотеку COM MSXML. – 2010-08-25 12:07:51

+0

Нет автоматических инструментов проверки, которые я знаю, вне SDK. Для любой проверки, не использующей SDK, это нужно будет сделать вручную, как указано в комментариях. Это потребует выполнения кода, созданного для обеспечения правильности XML в контексте того, где он вставлен/удален/отредактирован. –

+0

да, я согласен с вами в этом. Выполнение каждого изменения, которое я делаю, возможно, является единственным вариантом, но это также общее программирующее решение. Я надеялся на конкретный инструмент Office XML для PowerPoint, который фактически указал бы мне в сторону ошибки вместо PowerPoint, просто говоря «есть ошибка», когда он загружает презентацию. Странно, что Word 2007 идет немного дальше, чтобы сообщить, что случилось, а PowerPoint - нет. – 2010-08-26 07:58:12

Смежные вопросы