|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Тут вот пришлось вордом заняться, причем срочно. А знаю его где-то на 2%. Или меньше. Я то VB.Net изучать пытаюсь. Мне нужно программно прочитать текст в вордовском документе, построчно. Чувствую,что нужно Range нужно применить. Но как? И еще, в читаемых строках имеются формулы. То есть читать в строковые переменные не получиться. Во что читать такие строки? Подскажите пожалуйста, как это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 20:09 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
1) В ворде нет строк. Текст делится на параграфы, параграфы на предложения, предложения на слова. Для каждого из них можно получить объект Range. 2) Офисный редактор формул - черный ящик без дверцы. С ним ничего нельзя сделать программно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 20:26 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariy1) В ворде нет строк. Текст делится на параграфы, параграфы на предложения, предложения на слова. Для каждого из них можно получить объект Range Эх. Опровергать Антонария приятно, но страшно Покопался в хелпе, сделал построчное чтение: Код: plaintext 1. 2. 3. 4. 5.
Но надо понимать, что строка в ворде все же понятие виртуальное, и зависит даже от разрешения принтера. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 20:57 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariy2) Офисный редактор формул - черный ящик без дверцы. С ним ничего нельзя сделать программно. Все, что мне нужно сделать с этим черным ящиком - выделить его из строки, потом вставить его в другую строку. Это возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 22:38 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
yanyariy, нет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 22:39 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Впрочем, можно расковырять docx - там формулы присутствуют в виде xl\drawings\vmlDrawing1.vml (текст) и xl\media\image1.emf (картинка). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 23:02 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariyxl\На экселе проверял. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2011, 23:03 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Неужели нельзя удалить из строки все буквы, что бы осталась только формула? Ведь формула - это объект Microsoft Equation 3.0 раз это объект, его как то можно найти, определить, скопировать, перенести. Произвести какие то действия. Но как? Как то не хочется верить, что это невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 12:05 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariy1) В ворде нет строк. Текст делится на параграфы, параграфы на предложения, предложения на слова. Для каждого из них можно получить объект Range. Теперь совсем тупой вопрос: параграф это от одного знака перевода строки до второго? Пожалуйста, дайте пример кода последовательного получения параграфов в объект Range. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 12:11 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
yanyariyскопировать, перенестиА ведь да, это можно. Саму коробку хоть по полу катай)) yanyariyНо как?Начать запись макроса, вставить формулу, поиграться с ней, окончить запись, посмотреть результат. yanyariyТеперь совсем тупой вопрос: параграф это от одного знака перевода строки до второго?Скорее всего да. yanyariyПожалуйста, дайте пример кода последовательного получения параграфов в объект Range. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 12:37 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
AntonariyyanyariyТеперь совсем тупой вопрос: параграф это от одного знака перевода строки до второго?Скорее всего да. НЕТ!!! Параграф (а точнее Paragraph, а в русском офисе - абзац) - это от одного знака конца абзаца до другого!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 13:18 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Так что автору надо определиться, что ему надо - построчное чтение (см. мой пример) или поабзацное чтение (см. пример Антонария) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 13:19 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Со строками ситуация несколько неоднозначная. :) Нужно различать "типографские" (назову их так) строки и строка электронного текста. Типографская строка это участок текста от левого края страницы до правого, а электронная — до перевода каретки или line feed или обоих вместе. Пример Shoker.Pro оперирует типографскими строками. Shocker.ProПараграф (а точнее Paragraph, а в русском офисе - абзац) - это от одного знака конца абзаца до другого!!! Это в теории, а на практике каждый перевод строки энтером означает новый абзац. Мягкий перенос shift+enter в рамках абзаца в тексте представлен символом с кодом 11 (vbVerticalTab), который вроде бы никогда не считался разделителем строк. Или считался? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 13:51 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
То есть автору нужно быть внимательным: то, что выглядит как несколько строк в ворде, может быть одной строкой в рамках правил например fso.TextStream при использовании ReadLine. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 14:04 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
AntonariyСМягкий перенос shift+enter в рамках абзаца в тексте представлен символом с кодом 11 (vbVerticalTab), который вроде бы никогда не считался разделителем строк. Или считался? Ну тут вопрос терминологии. Он в русской версии называется "разрыв строки". То есть типографская строка начнется новая. "Знак абзаца" разывает абзац. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 14:05 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
В общем, текст можно мерять попугаями разных видов и толщины :) Выбор за автором. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 14:10 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyпропущено... Скорее всего да. НЕТ!!! Параграф (а точнее Paragraph, а в русском офисе - абзац) - это от одного знака конца абзаца до другого!!! Почему то думал, что знак перевода строки и знак конца абзаца это одно и то же. Как бы совсем не запутаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 14:52 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
> Автор: yanyariy > Почему то думал, что знак перевода строки и знак конца абзаца это одно и то же. Как бы совсем не запутаться. Обычно так и бывает, но есть женщины в русских селенияхпрограммы обезображенные интелектом, в которых абзац это когда ты нажал Enter. А до того как ты нажал Enter могут быть переносы строк, но они не будут концом абзаца. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 15:21 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Shocker.Pro, Я тут попробовал Ваш код в действии, вот что получилось: Код: plaintext 1. 2. 3. 4.
Попытался скопировать абзац (параграф) и добавить его в документ вот так: Код: plaintext 1. 2. 3.
А времени, чтоб это хоть как то освоить - сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 15:34 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
авторне объявленоПомимо копипасты нужно еще в ссылки проекта добавить ссылку на word. авторнесовпадение типаПотому что add принимает тип range, а не paragraph. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 15:49 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariyавторне объявленоПомимо копипасты нужно еще в ссылки проекта добавить ссылку на word. авторнесовпадение типаПотому что add принимает тип range, а не paragraph. Ссылки все есть, иначе бы я не смог создать в программе документ вордовский, подсчитать количество параграфов, предложений... Перешел на макросы. Вставил такой код: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 16:35 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
yanyariy, не гнушись русскими словами Paragraf = ThisDocument.Paragraphs(1) вот так ЦЭ = ThisDocument.Paragraphs(1) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 16:44 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
'тут выделяет мне слово Paragraf и выдает сообщение Потому что читать нужно внимательней. Paragraph и Range это разные классы. Еще раз: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 16:45 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Antonariy, раз 10 я слышал, что ActiveDocument и ThisDocument это разные вещи, читал, а посему имею Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 17:13 |
|
Прочитать Word и обработать.
|
|||
---|---|---|---|
#18+
Ципихович Эндрю, Замен на ЦЭ должного действия не произвела. А вот такой код почти работает: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2011, 17:18 |
|
|
start [/forum/topic.php?fid=60&msg=37071949&tid=2159041]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 328ms |
total: | 451ms |
0 / 0 |