Сохранение в экселе табличного документа с длинным текстом #424081


#0 by selenat
Столкнулся с проблемкой. Ячейки в табличном документе содержат длинные строки. При сохранении в эксель содержимое этих ячеек просто обрезается. Релиз платформы старый. 8.0.18.2. Вопроса два. 1.Удастся ли это победить обновлением релиза (соответсвенно до какой версии). 2.Как еще это можно победить.
#1 by Aprobator
точно обрезается? А если границы ячейки раздвинуть?
#2 by selenat
раздвигаю. Обрезано.
#3 by selenat
апп
#4 by Aprobator
дык -  а в макете внутри 1С если показать (вывести баличный документ) все на месте?
#5 by selenat
в 1С все нормально показывается. Мало того, если сохранить в mxl и открывать из 1С, тоже все хорошо. Обрезает почему-то при сохранении в формате xls
#6 by selenat
ау
#7 by dk
где-то вроде сплывало, что режет до 256 символов
#8 by selenat
да, именно так. Посчитал...
#9 by Aprobator
может объединение ячеек поможет? Типа кидать длинный текст не в одну ячейку, а в объединение ячеек, как вариант.
#10 by htva
mxl круче xls тут ограничения
#11 by dk
хз, вроде перенос строк через каждые 255 символов должен помочь, хотя не помню
#12 by selenat
у меня и так ячейка - объединение нескольких. Но в экселе должен быть уже готовый вариант (который сосбственно и сформирован в 1С)...
#13 by selenat
Звездец. Позвонил отцу проконсультирваться. Он говорит, что это обходится. Но для этого нужно формировать средствами языка экселевский документ через ОЛЕ-объект, при помощи бесиковских команд... о-О
#14 by selenat
интересно, надо будет проверить...
#15 by Torquader
просто в Excel передаются строки до 255 символов, а уже макрос в Excel собирает их, как было нужно - у меня вообще Excel "кушала" текстовый файл, по которому формировался лист.
#16 by selenat
не, перенос строк не помогает. надо будет подумать над этим, спасибо.
#17 by Torquader
на самом деле проблема в том, что окно передачи данных OLE - это 256 символов на строку, далее он её режет, причём даже из макросов Excel. Вот только не помню, что будет, если использовать значение Value2, которое чем-то там отличается. А формула в ячейке Excel никогда не может быть больше 256 символов - Microsoft никогда не умел и не научится работать с динамической памятью.
#18 by selenat
свой примерчик работы через текстовый файл кинуть можешь?
#19 by Torquader
Пишется шаблон Excel, то есть документ, который будет что-то делать. В нём есть процедура Sub Workboon_OnOpen в которой просто ищем нужный нам текстовый файл, который открываем на чтение через Scripting.FileSystemObject и читаем по строкам: Не забываем, что нужно создать новую книгу (или лист) - чтобы не писать в наш шаблон - посылать макросы кому-то в подарок - бессмысленно. В начале идут определения штрифта и цветов. Font:Номер,ИмяШтрифта,Высота,Жирность Color:Номер,R,G,B Border:Номер,Верх,Низ,Лево,Право,Ширина Потом идёт описание шаблона документа Columns:Ширина колонки,... Теперь описываем "строки" Line:Высота строки. Cells:НомерЯчейки,Штрифт,Цвет,Рамка,Тип,Данные Тип=Т просто текст, N это число,F это формула в формате RC. Штрифт, цвет и рамка - это ссылки на описание в заголовке. Чтение файла While File.atEndOfStream=false if n="Line" then  ' читаем высоту строки  i=CLng(s) ' здесь у меня была функция проверки формата, но для скорости можно и так  CurrentRow=CurrentRow+1 ' сдвигаемся на следующий ряд (не забть занулить перед работой)  InputSheet.Rows(CurrentRow).Height=i ' устанавливаем высоту строки elseif n="Cells" then  if n<>"-" then CurColor=GlobalColorArray(CLng(n)) else CurColor=False  ' и так далее для остальных параметров   .Font=GlobalFontArray(CurFont)   if CurColor<>False then .Interrior.Color=CurColor   ' с Border немного сложнее, так как там надо установить флаги чёрточек и их тип в разные места (как это было сделано я сейчас не помню) wend ' ну и так далее
#20 by Torquader
P.S. писал по памяти, но идея должна быть понятна. Чтобы не было вопросов - Такой пример: End Sub прекрасно "впихивает" в строку все 1000 чисел - явно более 256 символов.
#21 by Холст
может йоксель ?
#22 by selenat
(19,20) спасибо! Завтра буду разбираться... слышал про него краем уха, но не помню что за зверь...
#23 by Коллайдер
обрезка - шалости экселя.... вроде в последнем (2007 или каком там) - это ограничение сняли.... как все сложно то... Проще надо быть... проще...
#24 by selenat
завтра проверю
#26 by selenat
таки нет. И в 2007 то же самое....
#27 by selenat
+26 кроме того, если обыкновенным копи-пастом копируешь в ячейку текст, то ничего не обрезается, весь текст сохраняется в ячейке. Так что это не приколы экселя, это уродский механизм платформы 1С по сохранению данных в экселевском формате...
#28 by selenat
Так, еще вопросик. А рисунки при сохранении табличного документа в эксель почему теряются? Эксельный файл уже без факсимилье идет. Это как-то настраивается?
#29 by MM
8.0 штатными средствами пишет в формате Эксел 95, который не поддерживает Юникод и есть ограничение на длину ячейки. В 8.1 использует более старшую версию Эксела, или можно, как было сказано ранее, исправить полученный xls файл через OLE Automation, достаточно изменить только ячейки с длинными строками.
#30 by Leksus
сохраняй в формате Excel97 и все будет ок
#31 by selenat
а если точнее, 8.1 не будет обрезать текст?
#32 by selenat
как это практически сделать? 8.1 использует этот формат для сохранения?
#33 by Leksus
Синтаксис: Записать(<Имя файла>, <Тип файла таблицы>) Параметры: <Имя файла> (обязательный) Тип: Строка. Имя файла, в котором сохраняется табличный документ. <Тип файла таблицы> (необязательный) Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ. Значение по умолчанию: MXL Описание: Записывает табличный документ в файл. Примечание: При работе на сервере или через com-соединение использует только файлы форматов mxl и txt. Пример: ТабДок.Записать("C:My DocumentsТаблица2.mxl");
#34 by Leksus
см. параметр <Тип файла таблицы>
#35 by selenat
спасибо! Сейчас попробую.
#36 by selenat
увидел. Но коллекция <Тип файла таблицы> не содержит Excel97. Похоже, надо перейти на 8.1...
#37 by selenat
Насчет сохранения рисунка подскажите. По поводу ...
#38 by selenat
Рисунки в эксель никто не сохраняет? Ау!
#39 by selenat
Рискунки... В эксель...
#40 by selenat
апп
#41 by КонецЕсли
Из 8.0 по ОЛЕ засылаю в ячейку столько, что помещается только на 2 экранах (19 дюймов). Одной строкой. Ехель2002.
#42 by КонецЕсли
+ Правда тоже не всё доходит, но обрезает после многих тысяч символов
#43 by selenat
по ОЛЕ - да. Можно. Уже пример надыбал. Только трудоемко... Про рисунок кто-нить скажет чего?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С