Вывод MEMO поля в Excel 5.4

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Вывод MEMO поля в Excel 5.4

Сообщение Masygreen »

День добрый!
К новым патчам заявлено обновление функций вывода Excel
(Галактика 8.1(отпатченая по 30/12/2008), vip 5.4.14, Pervasive)
  • №5
    * ПРОБЛЕМА В ПИР: 103.3292
    * ПЕРВОЕ РЕШЕНИЕ: EXCELLIB3X_DLL_81010
    * КРАТКОЕ ОПИСАНИЕ: Функция для мемо-поля
    * ПРОЕКТ: Отчеты в XLS
    * ДЕТАЛИЗАЦИЯ: Отчеты в XLS в целом
    # ЧТО ИЗМЕНЕНО: Требуется вывод Memo-полей в Excel
    # КАК ИЗМЕНЕНО: Добавлена функция:
    xlAddCellStringValue(Value : shortstring; Row : longint = 0; Col : longint = 0)
    * * *
Пробую реализовать..........

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

.form 'test_2009'
.ard
.nameinlist 'Тест'
.var
Row_Count:integer;
.endvar
.create view a1 as select docinfo.textdata
from DocInfo
where ((281474976715921==DocInfo.cDoc
and word(0)==DocInfo.DocType
));
.begin
  xlCreateExcel('rep.xls',true);
  xlCreateMatrix(10,10);
  xlSTWriteToMatrix(1,1,'Привет!!!!!!!!!!!!');
  Row_Count:=2;
  _loop DocInfo
  {
  xlAddCellStringValue(docinfo.textdata,Row_Count,1);
  Row_Count:=Row_Count+1;
  }
  xlWriteMatrixToExcel(1,1);
  xlFreeMatrix; 
  xlKillExcel;
  test_2009.fexit;
end.
.endform
Ошибка - немогу осуществить преобразование типа на строке xlAddCellStringValue(docinfo.textdata,Row_Count,1);


Кто нибудь уже победил данный функционал?
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

docinfo.textdata все таки не shotstring
видать как и прежде нужно вычитывать мемополе по строкам и пихать в excel(memoreadln или объектный фейс), только раньше была функция на запись, а теперь есть и на дозапись. Да и вывод матрицы в вашем примере просто все затрет.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

А как же
# ЧТО ИЗМЕНЕНО: Требуется вывод Memo-полей в Excel
может из галактики кто прокомментирует?
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

так уже же сказали.
читаете построчно мемо-поле пока не кончится и строчками дописываете всё это в одну ячейку экселя, указанной вами функцией.

видимо так...
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Алексей, как выводить мемо поле строчками я знаю , хоть в ворд, хоть в ексель хоть в бизнес текст .
Просто заявлена функция которая это должна по идее делать ...
Время ведет!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

edward_K писал(а):.... только раньше была функция на запись, а теперь есть и на дозапись. ..
xlAddCellStringValue - по сути навреное только это, и ничего более...
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Masygreen
я думаю сделали функцию которая "дозаписывает" строчку в ячейку эксель.
т.е. если просто положить значение а потом положить второе - то в ячейке окажется значение два
а если сделать этой функцией - то там будет 2 строчки в одной ячейке.
думаю что это имелось в виду.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Ух ты точно .... вообще то из названия функции логично такая трактовка ...
жаль .. хотелось большего :(
Время ведет!
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Офицал ответ галактики ..... тема закрыта
  • Для решения проблемы вывода содержимого Memo-полей, добавлена функция:
    xlAddCellStringValue(Value : shortstring; Row : longint = 0; Col : longint = 0)
    Данная функция добавляет к содеримому ячейки значения типа shortstring (в атлантисе это тип string). Т.е. добавляет строку максимум 255 символов.
    Разбор содержимого Memo-поля на строки по прежнему лежит на прикладном программисте.

    Прежняя функция:
    xlSetCellStringValue(Value : shortstring; Row1 : longint = 0; Col1 : longint = 0; Row2 : longint = 0; Col2 : longint = 0)
    Устанавлявает в ячейку/ячейки значение типа shortstring.

    Таким образом чтобы вывести "длинный текст" в ячейку. следует
    0. разбить его на строки типа shortstring
    1. 1-ю строку установить функцией xlSetCellStringValue
    2. остальные строки добавить функцией xlAddCellStringValue
Время ведет!
Ответить