Имя: Пароль:
1C
 
Сохранение даты в Excel табличный документ БП 3.0.190.22
0 SJ_prog
 
16.04.26
16:09
Всем добрый день.
Вроде ерунда вопрос. Нужно сохранить табличный документ в эксель. Чтобы значения даты в эксель попадали в формате Дата, а не общий. В процессе формирования табличного документа дату пересчитываю в число, формат ячейки указала ДФ=dd.MM.yyyy в свойствах. Сохраняю с расширением xlsx. Открываю файл, а там числовые значения показывает программа. Нужно, чтобы отображалась дата. Если указать без конвертации в число значению формат ДФ=dd.MM.yyyy, то выгружается формат общий, значение выглядит при этом, как дата. Если активировать ячейку, то формат ячейки в эксель меняется на Дата.
Подскажите, пожалуйста, как эту ерунду победить.
1 Garykom
 
гуру
16.04.26
16:23
>В процессе формирования табличного документа дату пересчитываю в число, формат ячейки указала ДФ=dd.MM.yyyy в свойствах.

Не надо так делать
На ИС много раз разжевывалось
https://forum.infostart.ru/forum9/topic47012/
в 1С для ячейки в свойствах поставить "содержит значение" - тот тип, что нужен. У меня так решило проблему с исчезающими нулями в начале строки - я явно тип "строка" прописывал

Т.е. для ячейки в макете в свойствах указать как на картинке
И писать/выводить в ТабДок именно дату! Не число!
А еще ТипФайлаТабличногоДокумента.XLSX при ТабДок.Записать
2 timurhv
 
16.04.26
18:56
(1) Не поможет с Датой, там править надо файлы xml после сохранения и пересчитывать в число с 1900 года.
3 Garykom
 
гуру
16.04.26
19:46
(2) Странно

Но согласен если делать Формат() - хренъ будет
4 Garykom
 
гуру
16.04.26
19:49
(3)+ И формат ячеек в Экселе для дат "Общий" получился
Как и для строк и для булевых
А вот для чисел ставит что числовой

Сам формат для ячейки не задавал
5 timurhv
 
16.04.26
21:21
(4) В Excel не будет подобного фильтра, а в (0) именно он нужен. Только распаковывать при сохранении, лопатить xml и собирать заново.
6 timurhv
 
16.04.26
21:56
(0) а ну хотя если дату уже конвертируете в число, то нужно найти стиль у ячейки в файлах \xl\styles.xml и указать нужный формат ячейки
<xf numFmtId="14"...
или
<xf numFmtId="165"...
<xf numFmtId="200"...

numFmtId - это номера формата ячейки (14 - "01.01.2026", остальные соответствуют другим форматам, сами сохраните одну книгу с 1 значением ячейки, установите нужный формат и посмотрите что в Книга1.zip в файле записалось).
Но с корректировкой формата будьте аккуратны, т.к. разные ячейки (колонки) могут ссылаться на один и тот же формат.

P.S: стили для ячеек указываются именно в секции
<cellXfs count="...">
</cellXfs>
Остальные секции - это вспомогательные данные, в cellXfs может ссылаться на порядковый номер стиля в других секциях этого файла (выделил жирным):
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
7 timurhv
 
16.04.26
21:53
Вот кстать статья, тут и расчет даты лучше реализован
https://infostart.ru/1c/tools/1700941/

Все стили:
https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2010/ee857658(v=office.14)?redirectedfrom=MSDN
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.