powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Экспорт в xlsx - форматы не работают
13 сообщений из 13, страница 1 из 1
Экспорт в xlsx - форматы не работают
    #39912909
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из скрипта экспортирую данные в файл xlsx

Код: plsql
1.
2.
3.
4.
5.
6.
7.
    export as XLS
    into 'D:\Bank\2020\OUT\BANK.xlsx'
    options '
      DateFormat="ДД.ММ.ГГГГ";
      CurrencyFormat="[Красный]# ##0,00;-# ##0,00";
      FloatFormat="[Красный]# ##0,00;-# ##0,00"
    ';



Ранее, когда делал экспорт в xls, видимо и более ранними версиями IBEScript, указание CurrencyFormat применяло этот формат к полю с суммой.

Сейчас на этот формат не ругается, но он и не применяется.
В файле xlsx в списке форматов этого моего нестандартного формата не вижу.
Добавление параметра FloatFormat тоже ни к чему не приводит.

Они теперь вообще не работают?
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39912965
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так ты загляни в результирующий xlsx - там обычный xml.
Прописаны ли форматы к соответствующим ячейкам? Правильно ли прописаны? Эксель что говорит?
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39913105
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт в UTF8.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
    options '
      CurrencyFormat="[Red]# ##0,00;-# ##0,00"
    ';

    styles.xml
	<numFmts count="2">
		<numFmt numFmtId="44" formatCode="_-* #,##0.00\ [$?]_-;\-* #,##0.00\ [$?]_-;_-* &quot;-&quot;??\ [$?]_-;_-@_-"/>
		<numFmt numFmtId="164" formatCode="#,##0.00\ [$?]"/>
	</numFmts>
----------------------------------------------------
    options '
      CurrencyFormat="[Красный]# ##0,00;-# ##0,00"
    ';

    styles.xml
	<numFmts count="2">
		<numFmt numFmtId="44" formatCode="_-* #,##0.00\ [$?]_-;\-* #,##0.00\ [$?]_-;_-* &quot;-&quot;??\ [$?]_-;_-@_-"/>
		<numFmt numFmtId="164" formatCode="#,##0.00\ [$?]"/>
	</numFmts>
----------------------------------------------------
    Просто в Excel задал ячейкам стиль "[Красный]# ##0,00;-# ##0,00"

    styles.xml
	<numFmts count="1">
		<numFmt numFmtId="166" formatCode="[Red]#,##0;\-#,##0"/>
	</numFmts>



Разбираться есть ли ссылки на формат из ячеек не стал, т.к. формат уже в каком-то странном виде.

Т.к. я все равно полученные после экспорта файлы дорабатываю макросами, все форматирование делаю в макросах.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39917085
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно, теперь твой эксель не понимает "Красный" и хочет "Red".
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39917097
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert
Очевидно, теперь твой эксель не понимает "Красный" и хочет "Red".


Может быть я как-то непонятно написал.

Я пробовал задавать в IBExpert и "Красный" и "Red".
Результат что получается при этом в файле сделанным IBExpert я привел, для обоих случаев.
Кстати, результат для обоих случаев одинаковый.

Так же взял этот файл xlsx, открыл в этом самом моем Excel, проставил нужный мне формат "Красный" и посмотрел что при этом в xml. Там "Red".
Впрочем, думаю что и раньше в файл писался именно Red.

Так вот, то что на основании моих форматов пишет IBExpert в xml - мой Excel понимать отказывается.
И это логично, т.к. там совсем не то что ожидается.

И еще раз обращаю внимание. Мой формат работал ранее в xls, и сейчас работает в самом распоследнем Excel, при задании его вручную. Но если его же задать в IBExpert - то в файл попадает что-то странное и Excel это странное не понимает.

ИМХО очевидно где слабое звено.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39917786
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказалось, что при таком экспорте пользовательские форматы в результирующий xlsx вообще не пишутся.
Я же имел в виду другой тип экспорта:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
export as XMLTABLE
    into 'D:\Bank\2020\OUT\BANK.xml'
    options '
      DateFormat="ДД.ММ.ГГГГ";
      CurrencyFormat="[Красный]# ##0,00;-# ##0,00";
      FloatFormat="[Красный]# ##0,00;-# ##0,00"
    ';



Вот в этом случае на выходе голый XML, который открывается экселем. Форматы туда пишутся, но не факт, что будут работать как в старом экселе.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39918166
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант
Код: plsql
1.
export as XMLTABLE

отсутствует в документации.
https://www.ibexpert.net/ibe/pmwiki.php?n=Doc.EXPORTASINTO
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39918174
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про
Код: plaintext
export as XMLTABLE.

Вот так делается запрос и экспортируется в файл.
База в UTF8, чарсет коннекта UTF8, сам скрипт с запросом - в UTF8.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    select
      cast(data as date) as "Дата",
      acc                as "Счет",
      firm               as "Фирма",
      plan_              as "План",
      summ               as "Сумма",
      txt                as "Наименование",
      bud                as "Бюджет",
      msg                as "Примечание",
      npp                as "№ платежки"
    from dat
    order by data, id

    export as XMLTABLE into 'D:\BankFP\2019\OUT\FPS-13.xml'
    options '
      CurrencyFormat="[Red]#,##0.00;-#,##0.00"
    ';



1. Поля формата timestamp и, вероятно, date , при экспорте получают тип Numeric и вместо даты в колонке отображается число(в смысле цифры).
Раз строки и числа какой-то дефолтный тип имеют, логично было бы и тут подставлять тип имеющий отношение к типу поля (дате-времени).

2. Заголовки полей - поломана кодировка.

3. Формат - в этом случае (as XMLTABLE) формат работает.
Но не так как было раньше, формат пришлось изменить.
И "[Красный]" теперь не прокатывает, Excel вообще файл с таким форматом "[Красный]" открывать отказывается.
Код: plaintext
CurrencyFormat="[Red]#,##0.00;-#,##0.00"


Под спойлером - кусок из начала получившегося файла.

Первая строка - Заголовки - поломана кодировка. При этом, экспорт as XLS кодировку заголовков колонок (первую строку) не ломает.

Вторая строка -
<Cell ss:StyleID="s66"><Data ss:Type="DateTime">2019-01-03T00:00:00.000</Data></Cell>
это я в Excel задал нужный формат для колонки с датой.

Третья строка
<Cell><Data ss:Type="Number">43471</Data></Cell>
а вот так выглядит поле с датой после экспорта из IBExpert.



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Version>16.00</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <AllowPNG/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>12375</WindowHeight>
  <WindowWidth>28800</WindowWidth>
  <WindowTopX>32767</WindowTopX>
  <WindowTopY>32767</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Font ss:FontName="Arial" x:CharSet="204" x:Family="Swiss"/>
  </Style>
  <Style ss:ID="s62">
   <Font ss:FontName="Arial" x:CharSet="204" x:Family="Swiss" ss:Bold="1"/>
  </Style>
  <Style ss:ID="s64">
   <Font ss:FontName="Arial" x:CharSet="204" x:Family="Swiss"/>
   <NumberFormat ss:Format="0"/>
  </Style>
  <Style ss:ID="s65">
   <Font ss:FontName="Arial" x:CharSet="204" x:Family="Swiss"/>
   <NumberFormat ss:Format="[Red]#,##0.00;\-#,##0.00"/>
  </Style>
  <Style ss:ID="s66">
   <Font ss:FontName="Arial" x:CharSet="204" x:Family="Swiss"/>
   <NumberFormat ss:Format="Short Date"/>
  </Style>
 </Styles>
 <Worksheet ss:Name="FPS-13">
  <Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="2672" x:FullColumns="1"
   x:FullRows="1" ss:DefaultRowHeight="15">
   <Column ss:Width="53.25"/>
   <Column ss:AutoFitWidth="0" ss:Width="120"/>
   <Column ss:AutoFitWidth="0" ss:Width="126"/>
   <Column ss:Width="48.75"/>
   <Column ss:Width="66.75"/>
   <Column ss:AutoFitWidth="0" ss:Width="243"/>
   <Column ss:AutoFitWidth="0" ss:Width="224.25"/>
   <Column ss:AutoFitWidth="0" ss:Width="399.75" ss:Span="1"/>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s62"><Data ss:Type="String">Дата</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Счет</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Фирма</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">План</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">РЎСѓРјРјР°</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Наименование</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Бюджет</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Примечание</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">№ платежки</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:StyleID="s66"><Data ss:Type="DateTime">2019-01-03T00:00:00.000</Data></Cell>
    <Cell><Data ss:Type="String">сбер</Data></Cell>
    <Cell><Data ss:Type="String">с</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="Number">1000021.9</Data></Cell>
    <Cell><Data ss:Type="String">Удача</Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
    <Cell><Data ss:Type="String">ЗА 01/01/2019;Аренда помещения за январь2019;</Data></Cell>
    <Cell><Data ss:Type="String">707207</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell><Data ss:Type="Number">43471</Data></Cell>
    <Cell><Data ss:Type="String">сбер</Data></Cell>
    <Cell><Data ss:Type="String">с</Data></Cell>
    <Cell ss:StyleID="s64"><Data ss:Type="Number">8</Data></Cell>
    <Cell ss:StyleID="s65"><Data ss:Type="Number">10000</Data></Cell>
    <Cell><Data ss:Type="String">Иванов И.И.</Data></Cell>
    <Cell><Data ss:Type="String"></Data></Cell>
    <Cell><Data ss:Type="String">ЗА 05/01/2019;Иванов Иван Иванович;</Data></Cell>
    <Cell><Data ss:Type="String">437999</Data></Cell>
   </Row>

...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39919170
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks

1. Поля формата timestamp и, вероятно, date , при экспорте получают тип Numeric и вместо даты в колонке отображается число(в смысле цифры).
Раз строки и числа какой-то дефолтный тип имеют, логично было бы и тут подставлять тип имеющий отношение к типу поля (дате-времени).


Не знаю, откуда у тебя там тип Numeric берется. В xml они попадают правильно, сформатированные как таймштамп. Но вот если формат ячейки не задан, в экселе будут отображаться просто как числа, да.
Впрочем, я сейчас прописал там дефолтовые системные форматы, так что теперь все нормально должно быть.

fraks

2. Заголовки полей - поломана кодировка.


Это исправил.

fraks

3. Формат - в этом случае (as XMLTABLE) формат работает.
Но не так как было раньше, формат пришлось изменить.
И "[Красный]" теперь не прокатывает, Excel вообще файл с таким форматом "[Красный]" открывать отказывается.
Код: plaintext
CurrencyFormat="[Red]#,##0.00;-#,##0.00"


Ну, вроде логично, что в xml никаких "красный" и прочих китайских слов в идентификаторе цвета быть не должно.
Странно, что раньше эксель такое понимал.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39919275
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert
fraks

1. Поля формата timestamp и, вероятно, date , при экспорте получают тип Numeric и вместо даты в колонке отображается число(в смысле цифры).
Раз строки и числа какой-то дефолтный тип имеют, логично было бы и тут подставлять тип имеющий отношение к типу поля (дате-времени).


Не знаю, откуда у тебя там тип Numeric берется. В xml они попадают правильно, сформатированные как таймштамп. Но вот если формат ячейки не задан, в экселе будут отображаться просто как числа, да.
Впрочем, я сейчас прописал там дефолтовые системные форматы, так что теперь все нормально должно быть.

Берется оно там следующим образом.

Делаем 2 поля, первое типа date, второе типа timestamp.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    select first 5
      cast(data as date     ) as "Дата",
      cast(data as timestamp) as "ДатаВремя",
      summ                    as "Сумма",
      'Текст ' || id          as "Наименование",
      id                      as id
    from dat
    order by data, id

    export as XMLTABLE into 'D:\BankFP\2020\02.xml'
    options '
      CurrencyFormat="[Red]#,##0.00;-#,##0.00"
    ';



Получаем корректные данные в значении полей
Код: xml
1.
2.
3.
4.
5.
6.
7.
      <Row>
        <Cell ss:StyleID="s20"><Data ss:Type="DateTime">2019-01-03T00:00:00.000</Data></Cell>
        <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2019-01-03T00:00:00.000</Data></Cell>
        <Cell ss:StyleID="s22"><Data ss:Type="Number">10021.9</Data></Cell>
        <Cell ss:StyleID="s23"><Data ss:Type="String">Текст 2181106</Data></Cell>
        <Cell ss:StyleID="s24"><Data ss:Type="Number">2181106</Data></Cell>
      </Row>



Но в форматах прописано вот так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
    <Style ss:ID="s20">
      <Font ss:FontName="Arial"/>
    </Style>
    <Style ss:ID="s21">
      <Font ss:FontName="Arial"/>
      <NumberFormat ss:Format="dd.MM.yyyy"/>
    </Style>



Т.е.
- для поля типа timestamp формат для ячейки задается в виде даты (хотя не совсем логично, нужно же дату-время).
- для поля типа date данные записываются корректно, но формат ячейки не задан как date, и Excel трактует эти данные как цифры а не дату.

Это в IBEScript версия файла 2019.10.9.1

IBExpert
fraks

2. Заголовки полей - поломана кодировка.


Это исправил.

Спасибо. А в какой версии/когда это будет доступно?

IBExpert
fraks

3. Формат - в этом случае (as XMLTABLE) формат работает.
Но не так как было раньше, формат пришлось изменить.
И "[Красный]" теперь не прокатывает, Excel вообще файл с таким форматом "[Красный]" открывать отказывается.
Код: plaintext
CurrencyFormat="[Red]#,##0.00;-#,##0.00"


Ну, вроде логично, что в xml никаких "красный" и прочих китайских слов в идентификаторе цвета быть не должно.
Странно, что раньше эксель такое понимал.


Думаю это связано с локализацией языка формул.
Пишем в Excel 2 одинаковых формулы,
Код: plaintext
1.
2.
= СУММ(A1:A3)
= SUM(A1:A3)

На вторую формулу ругается, типа не понимает что за фигня
#NAME?

Получаем в файле такое:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
   <Row ss:AutoFitHeight="0">
    <Cell ss:Index="3" ss:StyleID="s67" ss:Formula="=SUM(R[-3]C:R[-1]C)"><Data
      ss:Type="Number">18048.099999999999</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell ss:Index="3" ss:StyleID="s67" ss:Formula="=SUM(R[-4]C:R[-2]C)"><Data
      ss:Type="Error">#NAME?</Data></Cell>
   </Row>



Т.е. формулу задали корректно, но на стадии разбора ввода пользователя получаем отлуп.
То что раньше допускался [Красный] IMHO связано с тем что место преобразования Красный -> Red было где-то в другом месте, а сейчас оно выпало, или просто не реализовано в коде экспорта.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39919282
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks

Спасибо. А в какой версии/когда это будет доступно?


В сегодняшней версии эксперта проверь. Если все нормально - соберу IBEScript.

fraks

Т.е. формулу задали корректно, но на стадии разбора ввода пользователя получаем отлуп.
То что раньше допускался [Красный] IMHO связано с тем что место преобразования Красный -> Red было где-то в другом месте, а сейчас оно выпало, или просто не реализовано в коде экспорта.


В коде экспорта такого преобразования совершенно точно никогда не было. Этим сам эксель занимается или занимался.
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39919306
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert
fraks

Спасибо. А в какой версии/когда это будет доступно?


В сегодняшней версии эксперта проверь. Если все нормально - соберу IBEScript.

IBExpert 2020.1.28.1

- Заголовки колонок кодировку не портят.
- Формат ячеек для date и timestamp выставляется нормально.
- CurrencyFormat применяется (если правильно его написать).
...
Рейтинг: 0 / 0
Экспорт в xlsx - форматы не работают
    #39919722
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обновил IBEScript.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Экспорт в xlsx - форматы не работают
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]