Страница 2 из 4

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

Добавлено: 04 окт 2017, 11:55
Arcady
mihalych_2017 писал(а):
04 окт 2017, 11:27
Тут, я думаю, без VBA не обойтись.
Ну есть и другие библиотеки.

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

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

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

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

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

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

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

Добавлено: 04 окт 2017, 16:36
Arcady
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/

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

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

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

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

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

Добавлено: 08 ноя 2017, 12:05
palmoff
Вот свежая интересная статья по этой теме:

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

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

Добавлено: 08 ноя 2017, 14:11
andrey volkov
да я уже придумал себе решение
в файле sharedStrings первые значения - это заголовки столбцов
я могу просто подменить их на нужные мне заголовки

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

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

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

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

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

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

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

Добавлено: 08 ноя 2017, 14:53
Arcady
В статье средствами 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, думаю там можно будет построить действительно нормальное и универсальное решение.