Вход на сайт
Формуляр
847
NEW 18.02.14 08:29
Вопрос в том как заполнить формуляр/документ по маске данными из исходного текста автоматически. Сам текстовый файл состоит из пары сотен строк, в начале каждой строки стоит двухзначное число-код, которое определяет функцию следующего текста. Например:
15 Mustermann, где "15" осначает "фио"
17 Kurzschluss Straße 22, где "17" означает "адресс"
и тд.
Код периодически повторяется с новыми данными.
Задача превратить этот техт в набор отдельных формуляров для печати в PDF. Формуляр я сделаю сам. Можно конечно ручками расставить техт в нужные позиции формуляра и двести раз, но может быть есть возможность эту процедуру автоматизировать? Нужна идея. Спасибо.
15 Mustermann, где "15" осначает "фио"
17 Kurzschluss Straße 22, где "17" означает "адресс"
и тд.
Код периодически повторяется с новыми данными.
Задача превратить этот техт в набор отдельных формуляров для печати в PDF. Формуляр я сделаю сам. Можно конечно ручками расставить техт в нужные позиции формуляра и двести раз, но может быть есть возможность эту процедуру автоматизировать? Нужна идея. Спасибо.
NEW 18.02.14 09:34
в ответ dennisgelsen 18.02.14 08:29
Могу представить что это какой-нибудь каталог с лицензией на использование. 
Мне както один гаврик предложил подобную работёнку.
Но я к счастью (моему тоже) прочитал лицензию.
Оказалось, что фирма програмировавшая этот каталог вставила адреса-ловушки.
И если кто использовал эти адреса не заплатив, то могли с хорошей вероятностью влететь
на хорошенькую суммочку
А использкя эту программу с лицензионным кодом, эти ловушки деактивировались.
А если это всё легально, то былобы желательно посмотреть парочку - другую оригинальных дат из этой таблицы.
Чтоб пронаблюдать закономерность.
Тогда проще будет программку сколдовать

Мне както один гаврик предложил подобную работёнку.
Но я к счастью (моему тоже) прочитал лицензию.
Оказалось, что фирма програмировавшая этот каталог вставила адреса-ловушки.
И если кто использовал эти адреса не заплатив, то могли с хорошей вероятностью влететь
на хорошенькую суммочку

А использкя эту программу с лицензионным кодом, эти ловушки деактивировались.
А если это всё легально, то былобы желательно посмотреть парочку - другую оригинальных дат из этой таблицы.
Чтоб пронаблюдать закономерность.
Тогда проще будет программку сколдовать

NEW 18.02.14 11:45
в ответ dennisgelsen 18.02.14 08:29
Зависит от того, чем будет рендериться PDF. Если это xsl-fo, то в исходном xml-е в каком-то аттрибуте просто хранить номер кода поля. Если это к примеру Adobe InDesign, то можно воспользоваться или теми же xml тэгами или, если позволяют шаблоны, то метками(label). А остальное, когда есть шаблон с привязкой к полям по коду и функция для получения значения из текстового файла по коду, - дело техники.
NEW 18.02.14 15:14
в ответ Posmotrim 18.02.14 11:45
Пережать формуляры в PDF я могу и потом. А вот это
очень интересно, но как последнее осуществить и где смотреть функции, есть такие в Excel? Потому что какого-либо фундаментального программирования мне не осилить.
В ответ на:
... когда есть шаблон с привязкой к полям по коду и функция для получения значения из текстового файла по коду, - дело техники.
... когда есть шаблон с привязкой к полям по коду и функция для получения значения из текстового файла по коду, - дело техники.
очень интересно, но как последнее осуществить и где смотреть функции, есть такие в Excel? Потому что какого-либо фундаментального программирования мне не осилить.
NEW 18.02.14 15:44
в ответ dennisgelsen 18.02.14 15:14
Тоесть рендерит Excel? Вариантов много можно придумать...
1) Самый простой способ: в ячейку, куда нужно писать данные из внешнего файла запиcать к примеру "ex:22". Перед тем, как будет рендерится PDF, нужно будет обойти все ячейки, в которых есть "ex:число". Вытащить это число, потом взять значение из внешнего файла по данному коду и записать обратно в ячейку
2) Способ немного сложней. Но я бы выбрал именно его: Формируем ещё один дополнительный лист в эксел. Пишем функцию, которая содержимое внешнего файла занесёт в новый лист с учётом, что номер строки = коду текста. Значение пусть находится в столбце A. Теперь в листах "шаблонах" мы делаем просто ссылки на значения из дополнительного листа. Перед тем, как будет рендерится PDF, выхываем ф-ию которую мы написали, для обновления дополнительного листа.
1) Самый простой способ: в ячейку, куда нужно писать данные из внешнего файла запиcать к примеру "ex:22". Перед тем, как будет рендерится PDF, нужно будет обойти все ячейки, в которых есть "ex:число". Вытащить это число, потом взять значение из внешнего файла по данному коду и записать обратно в ячейку
2) Способ немного сложней. Но я бы выбрал именно его: Формируем ещё один дополнительный лист в эксел. Пишем функцию, которая содержимое внешнего файла занесёт в новый лист с учётом, что номер строки = коду текста. Значение пусть находится в столбце A. Теперь в листах "шаблонах" мы делаем просто ссылки на значения из дополнительного листа. Перед тем, как будет рендерится PDF, выхываем ф-ию которую мы написали, для обновления дополнительного листа.
NEW 18.02.14 15:48
в ответ dennisgelsen 18.02.14 15:14
В интернете полно примеров, как это делается в VBA.
stackoverflow.com/questions/11267459/vba-importing-text-file-into-excel-s...
http://www.excel-easy.com/vba/examples/read-data-from-text-file.html
stackoverflow.com/questions/11267459/vba-importing-text-file-into-excel-s...
http://www.excel-easy.com/vba/examples/read-data-from-text-file.html
NEW 18.02.14 16:15
в ответ Vovan(ator) 18.02.14 09:34
Не надо представлять и я не гаврик. Исходный файл - результат моего труда, принадлежит мне и снят мной лично с моего измерительного прибора для последующей обработки. Никакого криминала и никаких ловушек. Сама по себе твоя осторожность мне понятна. Оригинальная программа данные не "видит", хотя я могу легко открыть файл в текстовом редакторе и вижу все результаты. За два-три вечера перепечатаю ручками. Такие проблемы были уже и раньше, но в таком объеме и так больно в первые. Сами имена/ адреса меня слабо интересуют, они у меня есть и так - результаты важнее.
Текст в столбик, в начале строки двухзначное число/код и повторяется примерно через каждые девять строчек, с другим текстом или без текста вообще.
Текст в столбик, в начале строки двухзначное число/код и повторяется примерно через каждые девять строчек, с другим текстом или без текста вообще.
NEW 18.02.14 17:23
в ответ dennisgelsen 18.02.14 16:15
Не надо сразу обижаться

Извиняюсь если не удачно изложил историю.
Просто ситуация была очень похожа на Вашу и мой тогдашний заказчик дал мне подобное задание.
И еслиб я не обратил внимание на "мелочи", то влетели бы оба.
А так, он как узнал про ловушки и штрафы, то сразу передумал с заказом...
А если это всё без криминала, то и париться нечего.
Я бы парсер какой-нибудь спрограммировалбы, но уже вроде всё решилось.


Извиняюсь если не удачно изложил историю.
Просто ситуация была очень похожа на Вашу и мой тогдашний заказчик дал мне подобное задание.
И еслиб я не обратил внимание на "мелочи", то влетели бы оба.
А так, он как узнал про ловушки и штрафы, то сразу передумал с заказом...
А если это всё без криминала, то и париться нечего.

Я бы парсер какой-нибудь спрограммировалбы, но уже вроде всё решилось.
23.02.14 07:41
1. Формуляр сделал, функция "sverweis" успешно раставляет в нем техт по местам.
2. Макро пишет исходный текст в соседнюю таблицу, текст расщепляется по пробелам и лежит в массиве sverweis.
3. Макро вносит техт по строкам, до строки с номером 32(имя) - граница блока данных для этого формуляра. Теперь можно проверить техт, исправить и отправить на печать PDF.
Не соображу как менять блок техта на следующий из исходного файла. Надо сказать, что мой бейсик конкретно заржавел. Документ в Libreoffice.
похоже нужен еще один цикл и диалог с кнопкой "Next".
2. Макро пишет исходный текст в соседнюю таблицу, текст расщепляется по пробелам и лежит в массиве sverweis.
3. Макро вносит техт по строкам, до строки с номером 32(имя) - граница блока данных для этого формуляра. Теперь можно проверить техт, исправить и отправить на печать PDF.
Не соображу как менять блок техта на следующий из исходного файла. Надо сказать, что мой бейсик конкретно заржавел. Документ в Libreoffice.
похоже нужен еще один цикл и диалог с кнопкой "Next".
NEW 27.02.14 19:22
в ответ Vovan(ator) 25.02.14 08:27
Опять я,
как научить этот макро http://www.ooowiki.de/SpeichernAlsPdf.html печатать только первую страницу текста в PDF?
как научить этот макро http://www.ooowiki.de/SpeichernAlsPdf.html печатать только первую страницу текста в PDF?
NEW 27.02.14 20:39
в ответ dennisgelsen 27.02.14 19:22
Посмотри тут:
www.office-loesung.de/ftopic94579_0_0_asc.php?sid=d1c1149a5d8d6bc1aaf8bb0...
похоже подобная проблема была у человека.
И пожоже её решили.
www.office-loesung.de/ftopic94579_0_0_asc.php?sid=d1c1149a5d8d6bc1aaf8bb0...
похоже подобная проблема была у человека.
И пожоже её решили.
NEW 01.03.14 01:07
в ответ dennisgelsen 18.02.14 08:29
т.е. тебе нужно иметь формуляр и подставляя значения делать на этой основе готовый пдф?
если так то
1. делаешь в latex совй формуляр
2. вставляешь туда свои маркеры
3. пишешь скрипт, который будет заменять твои маркеры на данные
4. генерируешь при помощи pdflatex твой pdf из уже готового tex файла
мне в свое время нужно было быстро сделать решение для создания учета времени и составления на основе внесенных данных накладной на поставку услуг. сделал тупо bash скрипт, который все вносил в csv из которого я потом генерировал накладные на основе мною созданого формуляра.
если так то
1. делаешь в latex совй формуляр
2. вставляешь туда свои маркеры
3. пишешь скрипт, который будет заменять твои маркеры на данные
4. генерируешь при помощи pdflatex твой pdf из уже готового tex файла
мне в свое время нужно было быстро сделать решение для создания учета времени и составления на основе внесенных данных накладной на поставку услуг. сделал тупо bash скрипт, который все вносил в csv из которого я потом генерировал накладные на основе мною созданого формуляра.