ИЛИ - ИЛИ: выгрузка в Excel

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Аватара пользователя
Arcady
Администратор
Сообщения: 143
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение Arcady » 04 окт 2017, 11:55

mihalych_2017 писал(а):
04 окт 2017, 11:27
Тут, я думаю, без VBA не обойтись.
Ну есть и другие библиотеки.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 196
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение andrey volkov » 04 окт 2017, 15:55

поэкспериментировал 3 вариант.
минусы: все данные можно выгружать только в текстовые поля. В экселе они отобразятся адекватно (хотя формат и будет текст).
Во всех остальных случаях заголовки первой строкой не создать

По поводу VBA. Для Windows это не сложно реализуется. Но поскольку только для Windows - то не универсально

Кстати, есть 5 вариант.
Хранится файл-шаблон в Excel. Он содержит только заголовки столбцов и ссылку, что данные экспортируются из такого-то текстового файла csv.
Сначала выгружается csv, потом экспортируется шаблон с функцией открыть автоматически. При открытии связи обновятся.
Плюсы: поддерживается форматирование, заданное изначально в шаблоне.
Минус метода: этот файл Excel связан с текстовым файлом-источником. Пользователь может видеть данные, но чтобы переслать кому-то файл, нужно выполнять процедуру "Сохранить как".

Аватара пользователя
Arcady
Администратор
Сообщения: 143
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение Arcady » 04 окт 2017, 16:33

andrey volkov писал(а):
04 окт 2017, 15:55
По поводу VBA. Для Windows это не сложно реализуется. Но поскольку только для Windows - то не универсально
Ну есть, например это: http://poi.apache.org
Можно изучить и запускать через ScriptMaster
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Аватара пользователя
Arcady
Администратор
Сообщения: 143
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение Arcady » 04 окт 2017, 16:36

Arcady писал(а):
04 окт 2017, 16:33
andrey volkov писал(а):
04 окт 2017, 15:55
По поводу VBA. Для Windows это не сложно реализуется. Но поскольку только для Windows - то не универсально
Ну есть, например это: poi.apache.org
Можно изучить и запускать через ScriptMaster
А вот и на русском - надо будет заняться как-то:
https://tproger.ru/translations/how-to- ... i-example/
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 196
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение andrey volkov » 08 ноя 2017, 08:14

еще вариант пришел в голову: комбинированная выгрузка
выгружаем данные в эксель как обычно, средствами файлмейкера
затем стоит задача в этом файле заменить заголовки на "понятные пользователю"
это можно сделать генерацией и запуском vbs скрипта. То есть через язык Visual Basic Script
будет работать только на винде, и то коряво, поскольку библиотеки офиса разные в разных версиях винды

Аватара пользователя
Arcady
Администратор
Сообщения: 143
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение Arcady » 08 ноя 2017, 08:45

andrey volkov писал(а):
08 ноя 2017, 08:14
То есть через язык Visual Basic Script
будет работать только на винде, и то коряво, поскольку библиотеки офиса разные в разных версиях винды
Да забудьте вы про VB - есть java, есть php, с некоторых пор вот R прикрутили :) И все это кросплатформенные решения.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

palmoff
Сообщения: 15
Зарегистрирован: 11 сен 2017, 19:52

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение palmoff » 08 ноя 2017, 12:05

Вот свежая интересная статья по этой теме:

https://filemakerhacks.com/2017/11/05/e ... -and-xslt/

andrey volkov
Сообщения: 196
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение andrey volkov » 08 ноя 2017, 14:11

да я уже придумал себе решение
в файле sharedStrings первые значения - это заголовки столбцов
я могу просто подменить их на нужные мне заголовки

andrey volkov
Сообщения: 196
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение andrey volkov » 08 ноя 2017, 14:44

статья интересная
нам предлагается вместо экспорта в xslx экспортировать в csv
и второй вариант - генерация Excel XML файла (вариант, который еще несколько лет назад предлагал Михаил Едошин)

то есть промежуточные варианты.
если решите использовать csv - то попросите меня написать статью. Все это можно сделать намного проще :)

если решите использовать второй вариант, то рекомендую экспортировать данные из небольшой таблички с разными типами данных в эксель стандартными средствами файлмейкера, затем открыть этот файл и сохранить в формате Таблица XML 2003. После этого уже открыть в текстовом редакторе и посмотреть, как он устроен и поэкспериментировать.
Понятно, что у этого документа есть шапка, подвал и изменяемая часть собственно с данными. Сформировать исходный текст будет не сложно, равно как и сохранить его в виде файла (средствами плагина BE). Сложнее с форматированием, но просто, если форматирование не применять.
Тип данных Дата придется преобразовывать в

Код: Выделить всё

<Cell ss:StyleID="s71"><Data ss:Type="DateTime">2017-11-09T00:00:00.000</Data></Cell>
Документ с правильной шапкой открывается экселем без особых вопросов

Аватара пользователя
Arcady
Администратор
Сообщения: 143
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: ИЛИ - ИЛИ: выгрузка в Excel

Сообщение Arcady » 08 ноя 2017, 14:53

В статье средствами XSLT формируется фактически html файл. Если открыть его в текстовом редакторе (файл примера в статье) имеем:

Код: Выделить всё

<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<meta http-equiv=Content-Type content='text/html; charset=windows-1252'>
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content='Microsoft Excel 11'>
<style>
<!--table @page{} -->td.N {mso-number-format:'\#\,\#\#0\.00_ \;\[Red\]\-\#\,\#\#0\.00\ '} td.L {text-align:left;} 
</style>
<xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Sheet1</x:Name>
<x:WorksheetOptions>
<x:DisplayGridlines/>
<x:Selected/>
<x:FreezePanes/>
<x:FrozenNoSplit/>
<x:SplitHorizontal>1</x:SplitHorizontal>
<x:TopRowBottomPane>1</x:TopRowBottomPane>
<x:ActivePane>2</x:ActivePane>
<x:Panes>
<x:Pane>
<x:Number>3</x:Number>
</x:Pane>
<x:Pane>
<x:Number>2</x:Number>
</x:Pane>
</x:Panes>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</ x:ExcelWorkbook>
</xml>
</head>
В общем-то все неплохо, кроме больших НО:
- это xls, а не xlsx, что в наше время как-то даже неудобно :)
- эксель ругается при открытии, и пользователей это очевидно будет пугать.

так что пока я голосую за java через scriptmaster, думаю там можно будет построить действительно нормальное и универсальное решение.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Ответить