powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo при экспорте в Excel
9 сообщений из 9, страница 1 из 1
Memo при экспорте в Excel
    #33697705
Гурант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Реализовал механизм экспорта в Эксел из массива
_oBook.ActiveSheet.Range(_start_pos+":"+_oBook.ActiveSheet.Range(_start_pos).Offset(0,_kol_fields-1).Address).Value = this.array_pointer("_arr_fnames")
Все хорошо и быстро но есть одина проблема:
У меня много Memo-полей которые обязательны для экспорта. Но поля, длинна которых больше ~911 символов не пролазят. т.е. появляется ошибка
OLE error code 0x800a03ec: Unknown COM status code

обрезаю лишние символы - все хорошо. Наличие других полей в курсоре не влияет. Memo содержит переносы каретки для форматирования текста (нужно).

что это? Это лечится или надо менять способ экспорта
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33697787
5631
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в Excel формат поля "Общий" , длина записи может быть любой.
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33697813
Гурант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я создаю новый документ. т.е. форматы по умолчанию
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33697832
Гурант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
убирание переводов кареток не помогает
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33698741
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на то, что для этих полей подойдет только прямая вставка через

Код: plaintext
1.
2.
lcText = Replicate(Replicate('a23456789 ', 10 )+Chr( 10 ), 50 )
_oBook.ActiveSheet.Cells( 1 , 1 ).Value = m.lcText

При вставке через массив у меня ошибки COM не выскакивает (Excel 2002 + WinXP), но происходит обрезание вставляемого текста. У меня предел 1823 символа. Остальное просто отрезает.

Если же вставка через буфер обмена, то CHR(10) воспринимается как CHR(13). Т.е. не перенос в пределах ячейки, а перенос на следующую строку (в другую ячейку)
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33700003
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Гурант!

Да, это ограничение имеет место быть.
Вот кусок моего кода, обрабатывающий массив перед его выводом в Excel.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
* Дабы текст всегда оставался текстом (даже если там цифры)
* и чтобы избежать ошибок с = в качестве значения ячейки
IF VARTYPE(m.paData(m.ln3)) = "C"
  * Заменим CRLF на просто LF - по формату Excel
  paData(m.ln3) = STRTRAN(paData(m.ln3), CHR( 13 ) + CHR( 10 ), CHR( 10 ))
  * Обрежем слишком длинные поля - они не пройдут через массив
  paData(m.ln3) = "'" + LEFT(m.paData(m.ln3),  900 )
ENDIF
IF VARTYPE(m.paData(m.ln3)) = "D" AND ;
    EMPTY(m.paData(m.ln3))
  paData(m.ln3) = ""
ENDIF
IF VARTYPE(m.paData(m.ln3)) = "T" AND ;
    EMPTY(m.paData(m.ln3))
  paData(m.ln3) = ""
ENDIF
IF VARTYPE(m.paData(m.ln3)) $ "DT" AND ;
    YEAR(m.paData(m.ln3))<  1900 
  paData(m.ln3) = TRANSFORM(m.paData(m.ln3), "@E")
ENDIF
Конечно этот код не претендует на полноту, это лишь те ошибки с которыми я
сам встречался при подобном способе экспорта :) Как видишь мне не критична
была полнота вывода memo полей (это код из специального метода "грубого" но
универсального экспорта содержимого одного грида). также обрати внимание на
добавление апострофа и замену CRLF на просто LF.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33701245
Гурант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что дает апостроф?
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33701578
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГурантА что дает апостроф?
Указывает Экселю что это символьные данные, даже если состоят из одних цифр.
...
Рейтинг: 0 / 0
Memo при экспорте в Excel
    #33719039
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Гурант!

* Дабы текст всегда оставался текстом (даже если там цифры)
* и чтобы избежать ошибок с = в качестве значения ячейки

Апостроф это стандартный для Excel способ ЯВНО указать что данные являются
текстом, а не формулой, числом, датой или ещё чем-то "этаким".

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo при экспорте в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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