On-line: PSP, Haz, гостей 3. Всего: 5 [подробнее..]
АвторСообщение



Пост N: 530
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 12.10.17 16:03. Заголовок: Вопрос по Word


Всем привет !

Можно ли задать значения ячейкам одной строки таблицы Word'a присвоив им одномерный массив (как в Excel) ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 16 [только новые]


администратор




Пост N: 6610
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.10.17 16:50. Заголовок: надо пробовать Тему..


надо пробовать
Тему ты конечно же видел.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 531
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 12.10.17 16:56. Заголовок: Видел. Просто сейчас..


Видел. Просто сейчас цейтнот

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 297
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 12.10.17 17:08. Заголовок: fil пишет: Можно ...


fil пишет:
[quote]` Можно . Масиив любой. Поля Dbf и т.д.
Библиотека у тебя есть. Напиши , что надо - сделаю пример

....
WRITE NEWCELL oRTF TEXT Ks[1] ALIGN CENTER // по центру ячейки
WRITE NEWCELL oRTF TEXT OemToAnsi(Alltrim(Lrn)) ALIGN LEFT //к левому краю
WRITE NEWCELL oRTF TEXT Str(ItoS,12,2) ALIGN RIGHT //к правому
И т.д.
....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3622
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.10.17 07:57. Заголовок: Через vba/ole вряд л..


Через vba/ole вряд ли. У объектов range/selection в методах insertafter/insertbefore и в свойстве Text параметр требуется только string. Больше вроде ничего нет.
Можно сделать тоже самое через буфер обмена. Скопировать туда строку таблицы, посмотреть, какой там формат, и затем аналогично вставлять.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 299
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 13.10.17 11:47. Заголовок: Pasha пишет: Через ..


Pasha пишет:

 цитата:
Через vba/ole вряд ли. У объектов



Все проще. Есть небольшая библиотечка (с исходниками) на харборе. Под FW, особых проблем видимо и с минигуи не будет
Практически все ,что надо в ворде - есть. Синтаксис стандартный.На выходе RTF.

Пример: четыре колонки таблицы заполняются из фвйлика

DO WHILE .NOT. EOF()
If Ot->VSM=.F.

WRITE NEWCELL oRTF TEXT Str(Nnp,3) ALIGN CENTER
WRITE NEWCELL oRTF TEXT Alltrim(Ot->KOP) ALIGN RIGHT
WRITE NEWCELL oRTF TEXT OemToAnsi(Alltrim(Ot->NP)) ALIGN LEFT
WRITE NEWCELL oRTF TEXT Str(Ot->Tves,10,2) ALIGN RIGHT
Nnp:=Nnp+1

EndIf
SKIP

ENDDO






Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6611
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.10.17 13:40. Заголовок: ММК пишет: Есть неб..


ММК пишет:

 цитата:
Есть небольшая библиотечка (с исходниками) на харборе


Так может её пора уже выложить ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3623
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.10.17 14:12. Заголовок: Мне что-то смутно вс..


Мне что-то смутно вспоминается.. Это не класс RichText, который возник еще во времена клиппера, т.е. пришелец из 20-го века ? Он вроде бы через fread/fwrite разбирает файлы rtf как текст. Наверное делает это быстро, только это не универсальный способ.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 300
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 14.10.17 12:34. Заголовок: Pasha пишет: Мне чт..


Pasha пишет:

 цитата:
Мне что-то смутно вспоминается.. Это не класс RichText, который возник еще во времена клиппера, т.е. пришелец из 20-го века ?



Ну так память ведь хорошая! :)) Появился в одно время с TsBrows. Универсальность хорошо тогда , когда есть в ней необходимость. Этот класс только формирует
документы. Видимо поэтому работает на всех офисах.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 532
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 18.10.17 15:32. Заголовок: В некую строку докум..


В некую строку документа вставляю текст (2 т.строк)
oWrd:Selection:Range():Text:=buf дабы потом выдедить этот текст и ковертировать его в таблицу. Все работает. Однако если какая-либо строка текста шире страницы, то она она разорачивается и занимает уже две или более строк. Т.о. втавляемый на станицу текст
занимает не 2т. строк, а больше и я не полностью его выделяю. Как образом можно выдеить весть текст ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3624
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.10.17 10:16. Заголовок: 2 т.строк это 2 тыся..


2 т.строк это 2 тысячи строк ?

Вместо

oWrd:Selection:Range():Text:=buf

можно передавать текст проще

oWrd:Selection:Text:=buf

Сама проблема не очень понятна, поэтому скажу, как можно заполнить таблицу по-другому

1. Подготовить текст в таком формате:

cCell11+Chr(9)+cCell12+Chr(9)+...cCell1N+Chr(13)+Chr(10)+cCell21+Chr(9)+... и так далее,
т.е. разделитель строк - Chr(13)+Chr(10), разделитель столбцов в строке - табуляция

Скопировать его в буфер обмена.

2. Выделить всю таблицу

3. Вставить текст из буфера обмена:

oWord:Selection:Paste()


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 533
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 19.10.17 13:35. Заголовок: Спасибо, Паша ! Попр..


Спасибо, Паша ! Попробую.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 534
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 19.10.17 15:54. Заголовок: Не подскажешь еще, к..


Не подскажешь еще, как выделить диапазон в таблице ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3625
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.10.17 08:10. Заголовок: Сначала надо получит..


Сначала надо получить объект таблица:

oTbl := oWord:Tables[ nTbl ]

Затем:

Вся таблица:

oTbl:Range

Отдельная строка:

oTbl:Rows[ nRow ]:Range

Диапазон в таблице:

oWord:Range( oTbl:Rows( nRow1 ):Cells( nCol1 ):Range:Start, oTbl:Rows( nRow2 ):Cells( nCol2 ):Range:End ):Select()

не проверял, но судя по доке, должно работать.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 535
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 20.10.17 10:52. Заголовок: oWrd:Range(oTb:Item(..


oWrd:Range(oTb:Item(2):Rows:Item(2):Cells:Item(1):Range:Start, ;
oTb:Item(2):Rows:Item(100):Cells:Item(6):Range:End):Select()

Вроде все как настоящее, но не работает - ругается на Range.

Error Word.Application/0 S_OK: RANGE
Args:
[ 1] = N 1308
[ 2] = N 15174


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 536
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 20.10.17 11:16. Заголовок: Вот так заработало ..


Вот так заработало

oWrd:ActiveDocument:Range(oTb:Item(2):Rows:Item(2):Cells:Item(1):Range:Start, ;
oTb:Item(2):Rows:Item(100):Cells:Item(6):Range:End):Select()





Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3626
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.10.17 14:43. Заголовок: Вроде бы поддерживае..


Вроде бы поддерживается синтаксис для доступа к коллекции как к массиву, т.е. вместо

oTb:Item(2):Rows:Item(2):Cells:Item(1):Range:Start

можно

oTb[2]:Rows[2]:Cells[1]:Range:Start



Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 359
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет