Страница 1 из 1

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

Добавлено: 11 янв 2009, 18:12
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);


Кто нибудь уже победил данный функционал?

Добавлено: 12 янв 2009, 03:39
edward_K
docinfo.textdata все таки не shotstring
видать как и прежде нужно вычитывать мемополе по строкам и пихать в excel(memoreadln или объектный фейс), только раньше была функция на запись, а теперь есть и на дозапись. Да и вывод матрицы в вашем примере просто все затрет.

Добавлено: 12 янв 2009, 11:54
Masygreen
А как же
# ЧТО ИЗМЕНЕНО: Требуется вывод Memo-полей в Excel
может из галактики кто прокомментирует?

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

видимо так...

Добавлено: 12 янв 2009, 12:20
Masygreen
Алексей, как выводить мемо поле строчками я знаю , хоть в ворд, хоть в ексель хоть в бизнес текст .
Просто заявлена функция которая это должна по идее делать ...

Добавлено: 12 янв 2009, 13:17
Den
edward_K писал(а):.... только раньше была функция на запись, а теперь есть и на дозапись. ..
xlAddCellStringValue - по сути навреное только это, и ничего более...

Добавлено: 12 янв 2009, 13:28
Алексей
Masygreen
я думаю сделали функцию которая "дозаписывает" строчку в ячейку эксель.
т.е. если просто положить значение а потом положить второе - то в ячейке окажется значение два
а если сделать этой функцией - то там будет 2 строчки в одной ячейке.
думаю что это имелось в виду.

Добавлено: 12 янв 2009, 13:59
Masygreen
Ух ты точно .... вообще то из названия функции логично такая трактовка ...
жаль .. хотелось большего :(

Добавлено: 12 янв 2009, 15:53
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