|
|
|
v8: Продаю недорого :) [Конвертер Табличного документа в Word] | ☑ | ||
|---|---|---|---|---|
|
0
NS
27.09.06
✎
18:31
|
Удалось написать достаточно приличный универсальный конвертер Табличного документа в Word!
|
|||
|
1
Спорт
27.09.06
✎
18:33
|
Че-че?
|
|||
|
2
NS
27.09.06
✎
18:34
|
(1) Удалось написать достаточно приличный универсальный конвертер Табличного документа в Word
Так понятней? |
|||
|
3
Ajeksa
27.09.06
✎
18:35
|
(0) А почему не использовал activedocument?
|
|||
|
4
NS
27.09.06
✎
18:36
|
(3) Задача стояла сделать экспорт всех печатных форм из Восьмерки в Word.
|
|||
|
5
NS
27.09.06
✎
18:36
|
из УПП
|
|||
|
6
Спорт
27.09.06
✎
18:36
|
А из Excel нельзя было в Word затащить?
|
|||
|
7
zxcvb
27.09.06
✎
18:38
|
И сколько денег хочешь?:)
|
|||
|
8
Lendy
27.09.06
✎
18:39
|
(0) проверь аську.
|
|||
|
9
NS
27.09.06
✎
18:41
|
(6) Искажаеются документы уже при сохранении в Excel,
и как из Экселя сохранить в .Doc без искажений? (7) Пока бесплатно :) (8) Щас проверю. |
|||
|
10
zxcvb
27.09.06
✎
18:45
|
(9)2. Мало.
|
|||
|
11
Алгоритм
27.09.06
✎
18:46
|
А хто нить пробывал просто копи-пасте сделать, там лучше оригинала выходит
|
|||
|
12
Lendy
27.09.06
✎
18:47
|
(11) а колонтитулы и прочее?
|
|||
|
13
Алгоритм
27.09.06
✎
18:49
|
12. Колонтитулы не пробывал, а под прочим что подразумевается, печать и подпись что ли
|
|||
|
14
NS
27.09.06
✎
18:52
|
(13)
1. Картинки. 2. Колонтитулы. 3. Сохраняется формат - а это самое главное. (11) Копи-Пасте просто убивает документы... |
|||
|
15
NS
27.09.06
✎
19:07
|
Сразу оговорюсь - я обработку только добивал - остальное авторство -
Краузе Вадим, и Валеева Гузель. Сначала сохраняем в html и запускаем внешнюю обработку Процедура ПечатьWord(ВыводитьВWord = Ложь,ТабДокумент,Заголовок="") Экспорт Если ТабДокумент=Неопределено Тогда Возврат; КонецЕсли; //КВА+ Если Не ВыводитьВWord Тогда ТабДокумент.Показать(Заголовок,""); Иначе #Если Клиент тогда ВнешняяОбработка = ВнешниеОбработки.Создать(КаталогПрограммы()+"\ExtForms_80\ИмпортТабДокументаВMSWord.epf"); ПутьИИмяВремФайла = ПолучитьИмяВременногоФайла(); ТабДокумент.Записать(ПутьИИмяВремФайла,ТипФайлаТабличногоДокумента.HTML); ВнешняяОбработка.ПутьИИмяВремФайла = ПутьИИмяВремФайла; ВнешняяОбработка.ЛевКолонтитул = СокрЛП(ТабДокумент.НижнийКолонтитул.ТекстСлева); ВнешняяОбработка.СредКолонтитул = СокрЛП(ТабДокумент.НижнийКолонтитул.ТекстВЦентре); ВнешняяОбработка.ПравКолонтитул = СокрЛП(ТабДокумент.НижнийКолонтитул.ТекстСправа); ВнешняяОбработка.ПолучитьФорму().Открыть(); #КонецЕсли КонецЕсли; //КВА- КонецПроцедуры // ПечатьWord() |
|||
|
16
NS
27.09.06
✎
19:09
|
Потом обрабатываем html (выравниваем, и исправляем ошибку 1С с символом Табуляции)
Процедура ПриОткрытии() //если открыта без параметра Если ПустоеЗначение(ПутьИИмяВремФайла)=1 Тогда Возврат; КонецЕсли; Т=новый текстовыйДокумент; Т1=новый текстовыйДокумент; Т.Прочитать(ПутьИИмяВремФайла); Для а=1 по Т.КоличествоСтрок() цикл стр=Т.ПолучитьСтроку(а); стр=стрзаменить(стр,символ(9)," "); стр=стрзаменить(стр," font-family:"," text-align: justify; font-family:"); стр=стрзаменить(стр," text-align: left"," text-align: justify"); Т1.ДобавитьСтроку(стр); КонецЦикла; Т1.Записать(ПутьИИмяВремФайла); Состояние("Выполняется импорт документа в Microsoft Word.."); |
|||
|
17
NS
27.09.06
✎
19:10
|
Потом добавляем колонтитулы
Для н=0 По СтрДлина(ПутьИИмяВремФайла)-1 Цикл Симв=Сред( ПутьИИмяВремФайла, СтрДлина(ПутьИИмяВремФайла)-н, 1); Если Симв="." Тогда ПутьИИмяКонФайла = Лев( ПутьИИмяВремФайла, СтрДлина(ПутьИИмяВремФайла)-н-1)+".doc"; ПутьИИмяВремКаталогаHTML = Лев( ПутьИИмяВремФайла, СтрДлина(ПутьИИмяВремФайла)-н-1)+"_files"; Прервать; КонецЕсли; КонецЦикла; СтрКолонтитула=""; Для н=1 По 86 Цикл СтрКолонтитула = СтрКолонтитула+" "; КонецЦикла; НачСред = (СтрДлина(СтрКолонтитула)/2) - (СтрДлина(СредКолонтитул)/2); СтрКолонтитула = Лев(СтрКолонтитула,НачСред-1) + СредКолонтитул + Прав(СтрКолонтитула,СтрДлина(СтрКолонтитула)-(НачСред+СтрДлина(СредКолонтитул)-1)); СтрКолонтитула = Лев(СтрКолонтитула,СтрДлина(СтрКолонтитула)-СтрДлина(ПравКолонтитул)) + ПравКолонтитул; СтрКолонтитула = ЛевКолонтитул + Прав(СтрКолонтитула,СтрДлина(СтрКолонтитула)-СтрДлина(ЛевКолонтитул)); |
|||
|
18
NS
27.09.06
✎
19:11
|
Затем диалог выбора файла и форматирование документа
Режим = РежимДиалогаВыбораФайла.Сохранение; Диалог = Новый ДиалогВыбораФайла(Режим); Диалог.Расширение = "doc"; Диалог.Фильтр = "Документ Microsoft Word (*.doc)|*.doc"; Диалог.Заголовок = "Введите имя сохраняемого файла"; Если Диалог.Выбрать() Тогда Попытка Word = Новый ComObject("Word.Application"); Word.Documents.Open(ПутьИИмяВремФайла,,,,,,,,,0); //переключиться на нижний колонтитул Word.ActiveWindow.ActivePane.View.SeekView = 10; Word.Selection.Font.Name = "Courier New"; Word.Selection.Font.Size = 9; Word.Selection.TypeText(СтрКолонтитула); Word.ActiveWindow.ActivePane.View.SeekView = 0; // Word.ActiveDocument.PageSetup.LeftMargin = word.CentimetersToPoints(0.7); Word.ActiveDocument.PageSetup.RightMargin = word.CentimetersToPoints(0.7); Для ии=1 по Word.ActiveDocument.Tables.count цикл Word.ActiveDocument.Tables(ии).Rows.LeftIndent = word.CentimetersToPoints(0); Word.ActiveDocument.Tables(ии).Rows.AllowBreakAcrossPages = False; Word.ActiveDocument.Tables(ии).AllowAutoFit = false; Word.ActiveDocument.Tables(ии).AutoFitBehavior(2); Word.ActiveDocument.Tables(ии).TopPadding = word.CentimetersToPoints(0); Word.ActiveDocument.Tables(ии).BottomPadding = word.CentimetersToPoints(0); Word.ActiveDocument.Tables(ии).LeftPadding = word.CentimetersToPoints(0); Word.ActiveDocument.Tables(ии).RightPadding = word.CentimetersToPoints(0); Word.ActiveDocument.Tables(ии).Spacing = 0; Word.ActiveDocument.Tables(ии).PreferredWidthType = 2; Word.ActiveDocument.Tables(ии).PreferredWidth = 100; КонецЦикла; Для ии=1 по Word.ActiveDocument.InlineShapes.count Цикл Word.ActiveDocument.InlineShapes(ии).LinkFormat.SavePictureWithDocument = true; КонецЦикла; If word.ActiveWindow.View.SplitSpecial = 0 Then word.ActiveWindow.ActivePane.View.Type = 1; Else word.ActiveWindow.View.Type = 1; EndIf; Word.ActiveDocument.SaveAs(Диалог.ПолноеИмяФайла,0); Word.ActiveDocument.Close(); УдалитьФайлы(ПутьИИмяВремКаталогаHTML); УдалитьФайлы(ПутьИИмяВремФайла); Word.Documents.Open(Диалог.ПолноеИмяФайла,,,,,,,,,0); Word.Visible = 1; Исключение Сообщить("Ошибка при работе с Word:"+ОписаниеОшибки()); //Word.ActiveWindow.Close(); Word=""; КонецПопытки КонецЕсли; Закрыть(); КонецПроцедуры |
|||
|
19
AeDen
27.09.06
✎
20:13
|
О как... У меня слюни текут...
|
|||
|
20
NS
27.09.06
✎
20:37
|
Разделителя страниц только нет, но как только придумаю как - сделаю его восстановление(он пропадает в момент сохранения в html)
|
|||
|
21
Advan
27.09.06
✎
20:42
|
В КЗ добавь
|
|||
|
22
NS
27.09.06
✎
20:50
|
Потом - с разделителем страниц разберусь, и добавлю.
|
|||
|
23
romix
модератор
27.09.06
✎
22:35
|
Кстати Excel (и даже OpenOffice) тоже может открывать HTML, если его переименовать в XLS.
|
|||
|
24
mrist
27.09.06
✎
22:38
|
(22) готов купить окончательный вариант и считаю это нормальным
например, в свое время здорово выручила аська от Сереженко |
|||
|
25
NS
27.09.06
✎
22:38
|
(23) Но это никак не поможет преобразовать ТД в .DOC :)
В Эксель всяко лучше сохранять напрямую, чем через html... |
|||
|
26
NS
27.09.06
✎
22:39
|
(24) Я не торгую разработками на встроенном языке 1С :)
Так что если получится с разделителем - то бесплатно :) |
|||
|
27
NS
28.09.06
✎
13:43
|
Говорят что иногда на Таблицах вместо одинарной - двойная рамка вылезает...
Как только продемонстрируют сразу подправлю. |
|||
|
28
NS
28.09.06
✎
13:59
|
(+27) Ложная тревога - это был старый вариант трансяции. К новому пока ни одной претензии. :)
|
|||
|
29
GROOVY
28.09.06
✎
15:32
|
Чегото я не въехал чечем внешняя обработка то используется?
|
|||
|
30
NS
28.09.06
✎
15:33
|
(29) Чтоб можно было менять и тестировать в процессе работы пользователей.
И чтоб можно было подменять на другую, и использовать в других конфигурациячх и т.д. |
|||
|
31
Aleksey_3
28.09.06
✎
15:33
|
Вот если бы он умел работать без Word`а, тогда было бы еще лучше.
|
|||
|
32
NS
28.09.06
✎
15:44
|
(31) А как пользователи без Ворда будут просматривать результат (Вордовский документ)???
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |