| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Таблицы в .doc и в .odt |
| Автор: WERITAS 9.2.2010, 12:31 |
| Добрый день. Моя программа (которая написана на ПхП) использует СОМ-объект Word'a, для экспорта табличной информации в документ .doc. То есть документ .doc я создаю и сохраняю автоматически, используя свойства и методы СОМ-объекта. Однако если получившийся документ открыть в OpenOffice, то таблицы, которые есть в документе, отображаются не так как в Ворд (см. аттач КакЕсть.doc ). Нарушаются настройки ширины колонок в таблице. В то же время стоит только мне сделать ЛЮБОЕ редактирование получившегося документа (например, поставить пробел в конце документа) и сохранить его, как потом он открывается и просматривается в OpenOffice "нормально", все настройки таблицы такие же как и в Ворде (см. аттач КакНадо.doc ). Если я просто нажимаю "Сохранить" в моём получившемся документе, то это не помогает. Помогает именно редактирование и последующее сохранение. На основе этих наблюдений я сделал вывод, что документ формируется как-то "неправильно". Что мне надо сделать, чтобы документ формировался "правильно"? Отблагодарю в репу за пример макроса, который "исправляет" сформированный документ как надо |
| Автор: skyboy 9.2.2010, 13:05 |
| а если вместо РНР кода с обращениями к СОМ написать макрос аналогичной функциональности и при помощи его создать файл. и сохранить его. то все нормально будет или нет? Добавлено через 10 минут и 24 секунды вобщем, если причина неизвестна, то самым быстрым методом отладки будет отсечение всего, что к ошибке не приводит, уменьшая проблему до одной-двух-трех строк кода. будет неплохо, если ты сам упростишь свой скрипт до минимально допустимого размера. чтоб не таблица на 14 страниц, на каждой из которых - колонтитулы и дополнительно извне таблицы текст. а таблица из одной строки. конечно,если при таком упрощении проблема останется. а то сейчас вариантов масса: 0. некорректная работа РНР-скрипта(например, передача вместо целого числа числа с плавающей запятой - типа 7.999 вместо 8) 1. проблемы с СОМ(маловероятно, используют ведь) 2. проблемы сохранения документа, которые исправляются при повторном сохранении документа(без реального редактирования, мне кажется, редактор просто фактически не сохраняет документ - в целях оптимизации; потому тебе и "требуется" хоть что-то, но исправить) 3. спорные параметры, которые ОО не понимает. а при пересохранении используется некий режим "совместимости" в отличие от генерации через СОМ. ---------- вот. минимум - 4 точки вероятного сбоя. а если у тебя будет скрипт на несколько строк, то каждый желающий сможет воспроизвести и ошибку станет проще обнаружить. Добавлено через 10 минут и 55 секунд у тебя 512 сообщений. поздравляю! |
| Автор: Akina 9.2.2010, 13:29 |
Попробуй использовать не DOC, а RTF. |
| Автор: WERITAS 10.2.2010, 11:25 | ||||
Я написал код VBA, который делает всё тоже самое, что и мой СОМ-объект:
Всё равно, когда открываю в OpenOffice, то таблицы кривые ((((((( мхт-файлик во вложении Добавлено через 7 минут и 49 секунд Попробовал задать больше параметров при сохранении написав:
Не помогло! В чём же тут дело???? |
| Автор: WERITAS 10.2.2010, 13:42 |
| Начал исследовать вёрстку в мхт-файле, думал, что дело в тэгах. Удалось установить, что когда в таблице 199 тэгов <tr>, то есть 199 строк, то всё формируется нормально. Потом я открываю в ОпенОфисе сгенерированный доковский файл и у меня таблицы выглядят как в Ворде. Стоит только добавить ещё одну строку в таблицу, пускай даже пустую, то есть тэг <tr class="Array"></tr>, снова сформировать доковский файл вышеприведённым макросом и открыть этот файл в ОпенОфисе, как опять таблицы "кривые" (( |
| Автор: skyboy 10.2.2010, 14:37 |
| то есть твой РНР скрипт открывал mht и при помощи СОМ сохранял его как .doc? |
| Автор: WERITAS 10.2.2010, 15:04 |
| Да, похоже что дело всё-таки в вёрстке, но закономерность я найти не могу (( Вышеописанный случай с кол-вом строк не сработал |
| Автор: WERITAS 10.2.2010, 15:35 | ||||||||
| Сгенерировал 2 doc-документа, менял вёрстку. В первом документе одна таблица правильно отображается, две другие неправильно. Во втором документе первые две таблицы правильно, третья - неправильно. Сохранил оба документа в xml-формате. 1 документ
2 документ
Когда таблица отображается на всю ширину страницы (как мне и надо), то у неё
а когда криво отображается, то
|