Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблицы в .doc и в .odt, Проблемы с форматированием таблицы 
:(
    Опции темы
WERITAS
Дата 9.2.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Добрый день. Моя программа (которая написана на ПхП) использует СОМ-объект Word'a, для экспорта табличной информации в документ .doc. То есть документ .doc я создаю и сохраняю автоматически, используя свойства и методы СОМ-объекта. 
Однако если получившийся документ открыть в OpenOffice, то таблицы, которые есть в документе, отображаются не так как в Ворд (см. аттач КакЕсть.doc ). Нарушаются настройки ширины колонок в таблице. В то же время стоит только мне сделать ЛЮБОЕ редактирование получившегося документа (например, поставить пробел в конце документа) и сохранить его, как потом он открывается и просматривается в OpenOffice "нормально", все настройки таблицы такие же как и в Ворде (см. аттач КакНадо.doc ). Если я просто нажимаю "Сохранить" в моём получившемся документе, то это не помогает. Помогает именно редактирование и последующее сохранение. 
На основе этих наблюдений я сделал вывод, что документ формируется как-то "неправильно". Что мне надо сделать, чтобы документ формировался "правильно"? Отблагодарю в репу за пример макроса, который "исправляет" сформированный документ как надо  smile 

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  attach.zip 75,13 Kb


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
skyboy
Дата 9.2.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



а если вместо РНР кода с обращениями к СОМ написать макрос аналогичной функциональности и при помощи его создать файл. и сохранить его. то все нормально будет или нет?

Добавлено через 10 минут и 24 секунды
вобщем, если причина неизвестна, то самым быстрым методом отладки будет отсечение всего, что к ошибке не приводит, уменьшая проблему до одной-двух-трех строк кода. 
будет неплохо, если ты сам упростишь свой скрипт до минимально допустимого размера. чтоб не таблица на 14 страниц, на каждой из которых - колонтитулы и дополнительно извне таблицы текст. а таблица из одной строки. конечно,если при таком упрощении проблема останется.
а то сейчас вариантов масса:
0. некорректная работа РНР-скрипта(например, передача вместо целого числа числа с плавающей запятой - типа 7.999 вместо 8)
1. проблемы с СОМ(маловероятно, используют ведь)
2. проблемы сохранения документа, которые исправляются при повторном сохранении документа(без реального редактирования, мне кажется, редактор просто фактически не сохраняет документ - в целях оптимизации; потому тебе и "требуется" хоть что-то, но исправить)
3. спорные параметры, которые ОО не понимает. а при пересохранении используется некий режим "совместимости" в отличие от генерации через СОМ.
----------
вот. минимум - 4 точки вероятного сбоя.
а если у тебя будет скрипт на несколько строк, то каждый желающий сможет воспроизвести и ошибку станет проще обнаружить.

Добавлено через 10 минут и 55 секунд
у тебя 512 сообщений. поздравляю!
PM MAIL   Вверх
Akina
Дата 9.2.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(WERITAS @  9.2.2010,  13:31 Найти цитируемый пост)
для экспорта табличной информации в документ .doc

Цитата(WERITAS @  9.2.2010,  13:31 Найти цитируемый пост)
получившийся документ открыть в OpenOffice

Попробуй использовать не DOC, а RTF.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
WERITAS
Дата 10.2.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Я написал код VBA, который делает всё тоже самое, что и мой СОМ-объект:
Код

Sub Export()
    
Documents.Open ("C:/pdt/test/test.mht")

ActiveWindow.View.TableGridlines = 0
ActiveDocument.PageSetup.Orientation = 1
ActiveDocument.PageSetup.TopMargin = 20
ActiveDocument.PageSetup.LeftMargin = 20
ActiveDocument.PageSetup.RightMargin = 20
ActiveDocument.PageSetup.BottomMargin = 20
Selection.ParagraphFormat.SpaceBefore = 1
ActiveWindow.View = 3

Documents(1).SaveAs "C:/pdt/test/test.doc", 1
Documents(1).Close

End Sub


Всё равно, когда открываю в OpenOffice, то таблицы кривые (((((((
мхт-файлик во вложении

Добавлено через 7 минут и 49 секунд
Попробовал задать больше параметров при сохранении написав:
Код

ActiveDocument.SaveAs FileName:="C:/pdt/test/test.doc", FileFormat:=wdFormatTemplate, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False

Не помогло! В чём же тут дело???? 

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  test.zip 13,82 Kb


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
WERITAS
Дата 10.2.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Начал исследовать вёрстку в мхт-файле, думал, что дело в тэгах. Удалось установить, что когда в таблице 199 тэгов <tr>, то есть 199 строк, то всё формируется нормально. Потом я открываю в ОпенОфисе сгенерированный доковский файл и у меня таблицы выглядят как в Ворде. Стоит только добавить ещё одну строку в таблицу, пускай даже пустую, то есть тэг <tr  class="Array"></tr>, снова сформировать доковский файл вышеприведённым макросом и открыть этот файл в ОпенОфисе, как опять таблицы "кривые" ((

Это сообщение отредактировал(а) WERITAS - 10.2.2010, 13:42


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
skyboy
Дата 10.2.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



то есть твой РНР скрипт открывал mht и при помощи СОМ сохранял его как .doc?

PM MAIL   Вверх
WERITAS
Дата 10.2.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Да, похоже что дело всё-таки в вёрстке, но закономерность я найти не могу (( Вышеописанный случай с кол-вом строк не сработал


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
WERITAS
Дата 10.2.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Сгенерировал 2 doc-документа, менял вёрстку. В первом документе одна таблица правильно отображается, две другие неправильно. Во втором документе первые две таблицы правильно, третья - неправильно. Сохранил оба документа в xml-формате. 

1 документ
Код

<w:style w:styleId="Таблица1" w:type="table">
<w:name w:val="Таблица1"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="-44.793" w:type="dxa"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>
<w:style w:styleId="Таблица2" w:type="table">
<w:name w:val="Таблица2"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="0" w:type="auto"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>
<w:style w:styleId="Таблица3" w:type="table">
<w:name w:val="Таблица3"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="0" w:type="auto"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>



2 документ
Код

<w:style w:styleId="Таблица1" w:type="table">
<w:name w:val="Таблица1"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="-44.793" w:type="dxa"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>
<w:style w:styleId="Таблица2" w:type="table">
<w:name w:val="Таблица2"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="-150.255" w:type="dxa"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>
<w:style w:styleId="Таблица3" w:type="table">
<w:name w:val="Таблица3"/>
<w:hidden w:val="on"/>
<w:tblPr>
<w:tblInd w:w="0" w:type="auto"/>
<w:jc w:val="left"/>
</w:tblPr>
</w:style>


Когда таблица отображается на всю ширину страницы (как мне и надо), то у неё 
Код

<w:tblInd w:w="-44.793" w:type="dxa"/>

 а когда криво отображается, то
Код

<w:tblInd w:w="0" w:type="auto"/>





--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.