2016-07-28 4 views
0

Ich habe eine Zeichenfolge, die aus IDs durch neues Zeilenvorschubzeichen getrennt (\ n) besteht gemacht. Jetzt möchte ich diese Zeichenfolge in die Excel einfügen, so dass alle IDs in verschiedenen Zellen in einer Spalte eingefügt werden. Dafür habe ich die Zeichenfolge in $ finCode, die ich in die Zwischenablage kopiert habe. Jetzt muss ich eine Zelle in der Excel-Tabelle auswählen und dann die ganze Zeichenfolge in diese Zelle einfügen, damit alle IDs in allen verschiedenen Zellen des Excel in der gleichen Spalte aufgefüllt werden. Der Code ist wie folgt:Einfügen von Daten aus der Zwischenablage in die Excel-Zelle mit Powershell

Ich importieren Sie die Arbeitsmappe als:

$workbook = $xldoc.Workbooks.Open($testType) 

ich für das Arbeitsblatt bin Überprüfung auf arbeiten:

$mysheet = $workbook.worksheets | where {$_.name -eq "JPT"} 

und ich bin mit diesem $ mysheet in die Funktion als

currentSheet $

Jetzt ist die Funktion wie:

addtitle() 
{ 
$finCode="" 

         $fRow=$intRow 


         for($intRow = $fRow ; $intRow -le $maxRow ; $intRow++){ 

          $codeName = $currentCode 
          $fin = $codeName + "_" + $i + "`n" 
          $finCode=$finCode+$fin 


          $i= $i + 1 
         } 

         # 

         $currentSheet.Cells.Item($fRow,$currentCol).Value2 = $finCode 

         $clipboardData = $finCode 

         [System.Windows.Forms.Clipboard]::SetText($ClipboardData) 



         $currentSheet.Cells.Item($fRow,$currentCol).Select() | Out-Null 

         $currentSheet.Paste($finCode) | Out-Null 

} 

Ich erhalte diesen Fehler: Sie können eine Methode für einen nullwertigen Ausdruck nicht aufrufen. Bitte helfen Sie mir die Werte der Zeichenfolge in Excel in verschiedenen Zellen der Spalte aufzufüllen.

Antwort

0

Kann ich eine Alternative zum Kopieren/Einfügen vorschlagen?

Ich habe ein Skript, das eine große Excel-Arbeitsmappe generiert und ich zuvor die Copy/Paste-Methode verwendet, weil das Schreiben Zelle für Zelle schmerzhaft langsam war, aber dann stieß ich auf Probleme beim Versuch, etwas anderes zur gleichen Zeit zu tun. Wenn ich in einer anderen Anwendung gleichzeitig kopieren/einfügen würde, würde das meine Ausgabe durcheinander bringen.

Ich würde empfehlen, ein mehrdimensionales Array zusammen mit Value2 des Zellbereichs zu verwenden.

Hier ist ein allgemeines Beispiel, die Sie sollten auf Ihre Bedürfnisse anpassen können:

# Open Excel 
$excel = New-Object -ComObject Excel.Application 
# Make Excel visible 
$excel.Visible = $true 
# Open new workbook 
$workbook = $excel.Workbooks.Add() 
# Use first sheet 
$worksheet = $workbook.Worksheets.Item(1) 
# Set a base string for the example 
$baseString = "RowTextExample" 
# Set column number 
$columnNum = 1 
# Set starting row number 
$startRowNum = 1 
# Set ending row number 
$endRowNum = 10 
# Create an empty multi-dimensional array that with the first digit equating to the number of rows and second equating to the number of columns 
$multiArray = New-Object 'object[,]' $endRowNum, 1 
# Since rows start at 1 and an array index starts at 0, set a variable to track the array index that starts at 0 
$arrayIndex = 0 
# Start at first row and go to the end row adding appending the base string with the row number 
for($rowNum = $startRowNum; $rowNum -le $endRowNum ; $rowNum++) 
{ 
    $multiArray[$arrayIndex, 0] = $baseString + "_$rowNum" 
    $arrayIndex++ 
} 
# Set the range where the data will be placed; the size must match the size of the multi-dimensional array 
# Example using A1 format instead of column number: $range = $worksheet.Range("A$($startRowNum):A$endRowNum") 
$range = $worksheet.Range($worksheet.Cells($startRowNum, $columnNum), $worksheet.Cells($endRowNum, $columnNum)) 
# Write the multi-dimensional to the range 
$range.Value2 = $multiArray 
+0

Hallo @ Jon wo soll ich die Spalte erwähnen nicht. im Bereich. Zum Beispiel hier sein genanntes "A". Jetzt habe ich die Spalte nicht wie 3 zu besetzen, also wie werde ich das in Code (Range) -Funktion erwähnen. –

+0

@ shikher.mishra, OK Ich habe den Code aktualisiert, um den Zellbereich mithilfe von Spaltennummern anstelle des A1-Formats zu referenzieren. Ich habe das Beispiel des A1-Formats für den Fall verlassen, dass es für andere nützlich ist. –

Verwandte Themen