Вопрос по powershell, ms-word – Читать текстовые документы (* .doc) с таблицами и т. Д.

5

У меня есть документ Word (2003). Я использую Powershell для разбора содержимого документа. Документ содержит несколько строк текста в верхней части, десяток таблиц с различным количеством столбцов, а затем еще немного текста.

Я ожидаю, что смогу прочитать документ примерно так:

Прочитать документ (сделать необходимые объекты и т. Д.)Получить каждую строку текстаЕсли не часть таблицы, обработайте как текст и запись-выводещеЕсли часть таблицыПолучить номер таблицы (по заказу) и проанализировать вывод на основе столбцовконец, если

Ниже приведен сценарий powershell, который я начал писать:

$objWord = New-Object -Com Word.Application
$objWord.Visible = $false
$objDocument = $objWord.Documents.Open($filename)
$paras = $objDocument.Paragraphs
foreach ($para in $paras) 
{ 
    Write-Output $para.Range.Text
}

Я не уверен, что абзацы это то, что я хочу. Есть ли что-нибудь более подходящее для моей цели? Все, что я сейчас получаю, - это все содержание документа. Как мне контролировать то, что я получаю. Как и я хочу получить строку, быть в состоянии определить, является ли она частью таблицы или нет, и выполнить действие, основываясь на том, что это за таблица чисел.

Документы Word нет организованы в линии. Пожалуйста, сделайте шаг назад и опишите проблему, которую выпытаемся решить, а не то, что вы воспринимаете как решение. Ansgar Wiechers
Конечно - спасибо за ответ ... Итак, у меня есть этот текстовый документ, содержащий текст и около 5 или 6 таблиц. Каждая таблица имеет различное количество столбцов от 2 до 6. Первая строка в каждой таблице описывает заголовок. Я пытаюсь выполнить (используя Powershell) чтение документа, анализ содержимого таблиц и вывод SQL-операторов, которые можно запускать отдельно для базы данных Oracle. Сейчас у меня много таких документов, и каждый из них похож по структуре. Но у каждого может быть больше или меньше строк в таблицах. Anoop

Ваш Ответ

1   ответ
6

Tables коллекция.Rows а такжеColumns Свойства позволят вам определить количество строк / столбцов в данной таблице. Отдельные ячейки могут быть доступны черезCell объект.

Пример, который будет печатать значение ячейки в последней строке и последнем столбце каждой таблицы в документе:

$wd = New-Object -ComObject Word.Application
$wd.Visible = $true
$doc = $wd.Documents.Open($filename)
$doc.Tables | ForEach-Object {
  $_.Cell($_.Rows.Count, $_.Columns.Count).Range.Text
}
Не уверен, что понимаю вопрос.Tables В коллекции есть все таблицы в документе и больше ничего. Когда вы получаете доступ к объекту из этой коллекции, этот объект является таблицей. Ansgar Wiechers
Большое спасибо. Но у меня есть один вопрос - как мне узнать, что я нахожусь внутри таблицы, чтобы вызвать логику, связанную с таблицей? Есть ли такая конструкция isTable ()? Anoop
хм - думаю, теперь я понимаю, что ты сказал. Я пытался читать весь текст последовательно, независимо от того, является ли это таблица или нет - и если это таблица, то я хотел бы назвать таблицу логикой. Но мне не нужно делать это таким образом. Использование коллекции таблиц выглядит чище. Большое спасибо. Anoop
Для записи, чтобы определить, находитесь ли вы в таблице, используйте логическое значение "Selection.Information (wdWithInTable)», (С опозданием на 6 лет) dcromley

Похожие вопросы