Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск текста в таблице MWord

Ответить
Настройки темы
PowerShell - [решено] Поиск текста в таблице MWord

Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый День!
Ранее не работала с таблицами созданными в Word. Необходимо найти текст и получить адрес ячейки в которой он находиться. Вхождений текста может быть не одно.

Код: Выделить весь код
$word = New-Object -Com Word.Application
$filename = 'd:\Table.doc'
$document = $word.Documents.Open($filename)
#$find = $word.Selection.Find.Text
$word.Selection.Find.Execute()
$table = $document.Tables.Item(2)
$tableCols = $table.Columns.Count
$tableRows = $table.Rows.Count

for($i=1; $i -le $tableRows; $i++) {

    for($j=1; $j -le $tableCols; $j++) {
      
    $table.Cell($i, $j).Range.Find.Text("ошибочно")  # Смотрели справку вроде все нормально, но выходит ошибка "Операции с семействами не поддерживаются"
    
   }

}  
    

$document.Close()
$word.Quit()
# Stop Winword Process
$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Word)

Отправлено: 16:53, 19-04-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


lox-ness, образец документа предоставьте.

Отправлено: 22:10, 19-04-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: doc Table.doc
(38.5 Kb, 23 просмотров)

Часть таблицы

Отправлено: 06:06, 20-04-2021 | #3


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Немного изменила код
Код: Выделить весь код
$Word = New-Object -Comobject Word.Application
$Word.Visible = $true
$count = 0
$File = "D:\Table.docf"
$Doc = $Word.Documents.Open($File)
$Selection = $Word.Selection
$Selection.GoTo(0) | Out-Null
$Find_String="ошибочно"

foreach ($find in $Find_String)
{
$Selection.Find.Text = $find 

do
{
    if ($Selection.Find.Execute())
    {
        Write-Host "Нашел" $count 
        
        $Word.Selection.Cells()
        $count++     
        
    }
}
while ($Selection.Find.Found)
}
$Selection.GoTo(0) | Out-Null
$word.Quit()
Стала получать информацию в которой меня должно интересовать видимо RowIndex и ColumnIndex, но почему-то получить их не получается, хотя например Width без проблем значение получаю
Код: Выделить весь код
Нашел 1
Range              : System.__ComObject
Application        : System.__ComObject
Creator            : 1297307460
Parent             : System.__ComObject
RowIndex           : 4
ColumnIndex        : 9
Width              : 176,15
Height             : 9999999
HeightRule         : 0
VerticalAlignment  : 0
Column             : System.__ComObject
Row                : System.__ComObject
Next               : System.__ComObject
Previous           : System.__ComObject
Shading            : System.__ComObject
Borders            : System.__ComObject
Tables             : System.__ComObject
NestingLevel       : 1
WordWrap           : True
PreferredWidth     : 176,15
FitText            : False
TopPadding         : 2,85
BottomPadding      : 2,85
LeftPadding        : 2,85
RightPadding       : 2,85
ID                 : 
PreferredWidthType : 3

Отправлено: 06:16, 20-04-2021 | #4


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Получили что хотели $Word.Selection.Cells() | Select RowIndex, ColumnIndex

Отправлено: 09:12, 20-04-2021 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


По мотивам https://stackoverflow.com/questions/...ith-tables-etc
Код: Выделить весь код
$filename = "D:\temp\Table.doc"
$search = "эквайринг"

$wd = New-Object -ComObject Word.Application
$doc = ($wd).Documents.Open($filename)
$report = @()

$cTable = 1
foreach ($table in $doc.Tables) {
    $cRows = $table.Rows.Count
    $cColumns = $table.Columns.Count

    $cColumn = 1
    do {
    $cRow = 1
        do {
            if ($table.Cell($cRow, $cColumn).range.text -match "$search") {
                $obj = [PSCustomObject]@{
                    '№ таблицы' = $cTable
                    '№ cтолбца' = $cColumn
                    '№ строки' = $cRow
                    Строка = $table.Cell($cRow, $cColumn).range.text
                }
                $report += $obj
            }
            $cRow++
        } until ($cRow -gt $cRows)
    $cColumn++
    } until ($cColumn -gt $cColumns)
$cTable++
}
$wd.Quit()

$report

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:17, 20-04-2021 | #6


Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо

Отправлено: 12:17, 20-04-2021 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Поиск текста в таблице MWord

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2007 - MS Word. В таблице граница перекрывает часть текста из соседнего столбца Илья Сидоров Microsoft Office (Word, Excel, Outlook и т.д.) 1 18-03-2019 22:47
2010 - поиск в одной таблице значений, которых нет в другой. Pavelasd Microsoft Office (Word, Excel, Outlook и т.д.) 0 01-05-2014 21:49
[решено] Поиск в таблице mysql через формы+php cibin Вебмастеру 33 25-06-2012 10:45
Поиск одинаковых значений в одной таблице MySQL blackmane Вебмастеру 1 01-04-2012 14:27
MSFT SQL Server - Поиск пустого поля в таблице rivera Программирование и базы данных 2 05-07-2011 11:04




 
Переход