поиск повторяющихся строк в Excel и экспорт этих строк на другой лист с помощью power shell

#c# #excel #powershell #oledb #oledbconnection

#c# #excel #powershell #oledb #oledbconnection

Вопрос:

Как найти повторяющиеся значения в Excel и экспортировать строки на другой лист с помощью Power shell? введите описание изображения здесьУ меня был лист Excel с несколькими строками и столбцами, скажем, от «A» до «k». Мне нужно найти повторяющиеся строки, только если значения во всех столбцах строки уникальны. И скрипт должен игнорировать столбцы D, E, F, даже если значения этих столбцов одинаковы.

Скрипт также должен скопировать все эти повторяющиеся строки и вставить в новый файл Excel.он также должен скопировать строку заголовка и источник повторяющихся строк, а также прикрепить образец изображения входного файла (выходной файл также должен совпадать с исходным в этом случае ввода, потому что он также должен копировать исходные повторяющиеся строки). Я пробовал код, но он выдает ошибку .. пожалуйста, изучите это и дайте мне решение для кода.

 code:
# The Text OleDB driver is only available in PowerShell x86. Start x86 
shell if using x64.
# This has to be the first check this script performs.
if ($env:Processor_Architecture -ne "x86")   { 
Write-Warning "Switching to x86 shell"
amp;"$env:windirsyswow64windowspowershellv1.0powershell.exe" 
"$PSCommandPath $args"; return 
 }

# Change to your CSV file name, must end in .csv or .tsv
$csvfile = "C:filesA01modcsv.csv"

 # Does the first row contain column names?
 $firstRowColumns = $True

 # What's the delimiter? Use `t for tabbed.
 $csvdelimter = "`t"


 $firstRowColumns = $true
 $checkColumns = "A"


 $datasource = Split-Path $csvfile
 $tablename = (Split-Path $csvfile -leaf).Replace(".","#")

 switch ($firstRowColumns) {
     $true { $firstRowColumns = "Yes" }
     $false { $firstRowColumns = "No" }
  }

 $elapsed = [System.Diagnostics.Stopwatch]::StartNew() 
 [void][Reflection.Assembly]::LoadWithPartialName("System.Data")

  # Setup OleDB using Microsoft Text Driver.
  $connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$datasource;Extended Properties='text;HDR=$firstRowColumns;FMT=Delimited($csvdelimter)';"

$conn = New-Object System.Data.OleDb.OleDbconnection
$conn.ConnectionString = $connstring
$conn.Open()
$cmd = New-Object System.Data.OleDB.OleDBCommand
$cmd.Connection = $conn


 # Perform select on CSV file, then add results to a datatable using ExecuteReader
 $sql = "SELECT $checkColumns, COUNT(*) as DupeCount FROM [$tablename] GROUP BY $checkColumns HAVING COUNT(*) > 1"
 $cmd.CommandText = $sql
 $dt = New-Object System.Data.DataTable
 $dt.BeginLoadData()
$dt.Load($cmd.ExecuteReader([System.Data.CommandBehaviour]::CloseConnection))
 $dt.EndLoadData()
 $totaltime = [math]::Round($elapsed.Elapsed.TotalSeconds,2)

 # Get Total Row Count

 $cmd.CommandText = "SELECT COUNT(*) as TotalRows FROM [$tablename]"
 $totalrows = $cmd.ExecuteScalar()
 $conn.Close()[enter image description here][1]

# Output some stats
$dupecount = $dt.Rows.Count
Write-Host "Total Elapsed Time: $totaltime seconds. $dupecount duplicates found out of $totalrows total rows. You can access these dupes using `$dt." -ForegroundColor Green
  

Я получаю ошибку в изменяемом коде в «$ dt.Load ($cmd.ExecuteReader([System.Data.CommandBehaviour]::CloseConnection))» команда …. может ли кто-нибудь помочь мне в решении этой ошибки.Спасибо.

Комментарии:

1. Не могли бы вы указать ошибку?

2. я получаю сообщение об ошибке «не удается найти тип [system.data.commandbehaviour] в указанной выше строке ошибки. Я использую powershell * 86. должен ли я импортировать какой-либо модуль для выполнения этой операции .. я не понимаю, что делать с этой ошибкой …?