Benutzer-Werkzeuge

Webseiten-Werkzeuge


epplus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
epplus [2024/08/26 09:48]
jango
epplus [2024/08/27 13:45] (aktuell)
jango [Schreiben]
Zeile 1: Zeile 1:
 EPPlus ist die Standalone DLL für das [[coding:powershell|Powershell]] Modul ImportExcel. EPPlus ist die Standalone DLL für das [[coding:powershell|Powershell]] Modul ImportExcel.
 +
 +<code powershell>
 +$epplusDllPath = ".\EPPlus.dll"
 +$excelFilePath = ".\Databases.xlsx"
 + 
 +Add-Type -Path $epplusDllPath
 + 
 +$package = New-Object OfficeOpenXml.ExcelPackage
 +$package.Load([System.IO.File]::OpenRead($excelFilePath))
 + 
 +$ws = $package.Workbook.Worksheets["Sheet1"]
 +
 +for ($row = 1; $row -le $ws.Dimension.End.Row; $row++) {
 +    $rowValues = @()
 +    for ($col = 1; $col -le $ws.Dimension.End.Column; $col++) {
 +        $cellValue = $ws.Cells[$row, $col].Text
 +        $rowValues += $cellValue
 +    }
 +    Write-Output "$($rowValues[0]) - $($rowValues[1])"
 +}
 +</code>
  
 =====Lesen===== =====Lesen=====
 <code powershell> <code powershell>
 +# Pfad zur EPPlus-DLL und zur Excel-Datei, die gelesen werden soll
 $epplusDllPath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\EPPlus.dll" $epplusDllPath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\EPPlus.dll"
 $excelFilePath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\Databases.xlsx" $excelFilePath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\Databases.xlsx"
  
 +# EPPlus-DLL laden
 Add-Type -Path $epplusDllPath Add-Type -Path $epplusDllPath
  
-$package = New-Object OfficeOpenXml.ExcelPackage +# Funktion zum Laden einer Excel-Datei 
-$package.Load([System.IO.File]::OpenRead($excelFilePath))+function Load-ExcelFile { 
 +    param ( 
 +        [string]$filePath 
 +    ) 
 +    $package = New-Object OfficeOpenXml.ExcelPackage 
 +    $package.Load([System.IO.File]::OpenRead($filePath)) 
 +    return $package 
 +}
  
-foreach ($ws in $package.Workbook.Worksheets) {+# Funktion zum Auswählen eines Arbeitsblatts nach Namen 
 +function Get-Worksheet { 
 +    param ( 
 +        [OfficeOpenXml.ExcelPackage]$package, 
 +        [string]$sheetName 
 +    ) 
 +    return $package.Workbook.Worksheets[$sheetName] 
 +}
  
-    Write-Output "Arbeitsblattname: $($ws.Name)"+# Funktion zum Lesen eines Werts aus einer bestimmten Zelle 
 +function Get-CellValue { 
 +    param ( 
 +        [OfficeOpenXml.ExcelWorksheet]$worksheet, 
 +        [int]$row, 
 +        [int]$col 
 +    ) 
 +    return $worksheet.Cells[$row, $col].Text 
 +}
  
-    for ($row = 1; $row -le $ws.Dimension.End.Row; $row++{ +# Funktion zum Lesen einer ganzen Zeile als Array 
-        $rowValues = @() +function Get-RowValues { 
-        for ($col = 1; $col -le $ws.Dimension.End.Column; $col++) { +    param ( 
-            $cellValue = $ws.Cells[$row$col].Text +        [OfficeOpenXml.ExcelWorksheet]$worksheet, 
-            $rowValues += $cellValue +        [int]$row 
-        } +    
-         +    $rowValues = @() 
-        #Write-Output ("Zeile $row : " + ($rowValues -join ", ")) +    for ($col = 1; $col -le $worksheet.Dimension.End.Column; $col++) { 
-        Write-Output "$($rowValues[0]) - $($rowValues[1])"+        $cellValue = Get-CellValue -worksheet $worksheet -row $row -col $col 
 +        $rowValues += $cellValue
     }     }
 +    return $rowValues
 +}
  
-    break+# Funktion zum Lesen aller Daten aus einem Arbeitsblatt 
 +function Get-AllRows { 
 +    param ( 
 +        [OfficeOpenXml.ExcelWorksheet]$worksheet 
 +    ) 
 +    $allRows = @() 
 +    for ($row = 1; $row -le $worksheet.Dimension.End.Row; $row++) { 
 +        $rowValues = Get-RowValues -worksheet $worksheet -row $row 
 +        $allRows += ,@($rowValues) 
 +    } 
 +    return $allRows 
 +}
  
 +# Hauptfunktion zum Lesen und Ausgeben der Daten aus der Excel-Datei
 +function Read-ExcelFile {
 +    param (
 +        [string]$filePath,
 +        [string]$sheetName
 +    )
 +
 +    # Excel-Datei laden
 +    $package = Load-ExcelFile -filePath $filePath
 +
 +    # Arbeitsblatt auswählen
 +    $worksheet = Get-Worksheet -package $package -sheetName $sheetName
 +
 +    if ($null -eq $worksheet) {
 +        Write-Error "Arbeitsblatt '$sheetName' nicht gefunden."
 +        return
 +    }
 +
 +    # Alle Zeilen aus dem Arbeitsblatt lesen
 +    $allRows = Get-AllRows -worksheet $worksheet
 +
 +    # Ausgabe der Daten
 +    foreach ($row in $allRows) {
 +        Write-Output ($row -join ", ")
 +    }
 } }
 +
 +# Beispiel: Daten aus einem bestimmten Arbeitsblatt lesen und ausgeben
 +Read-ExcelFile -filePath $excelFilePath -sheetName "Sheet1"
 </code> </code>
  
 =====Schreiben===== =====Schreiben=====
 <code powershell> <code powershell>
-# Pfad zur EPPlus-DLL +# Pfad zur EPPlus-DLL und zur neuen Excel-Datei 
-$epplusDllPath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\EPPlus.dll" +$epplusDllPath = ".\EPPlus.dll" 
-$excelFilePath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\Test.xlsx"+$excelFilePath = "Test.xlsx"
  
 # EPPlus-DLL laden # EPPlus-DLL laden
 Add-Type -Path $epplusDllPath Add-Type -Path $epplusDllPath
  
-Neue Excel-Datei erstellen +Funktion zum Erstellen eines neuen Arbeitsblatts 
-$package = New-Object OfficeOpenXml.ExcelPackage+function Add-Worksheet { 
 +    param ( 
 +        [OfficeOpenXml.ExcelPackage]$package, 
 +        [string]$sheetName 
 +    ) 
 +    return $package.Workbook.Worksheets.Add($sheetName) 
 +}
  
-Erstellen und Schreiben in das erste Arbeitsblatt +Funktion zum Hinzufügen von Daten in eine bestimmte Zelle 
-$worksheet1 = $package.Workbook.Worksheets.Add("Sheet1") +function Add-CellValue { 
-$worksheet1.Cells[11].Value = "Name" +    param 
-$worksheet1.Cells[12].Value = "Alter" +        [OfficeOpenXml.ExcelWorksheet]$worksheet, 
-$worksheet1.Cells[2, 1].Value = "John Doe" +        [int]$row, 
-$worksheet1.Cells[22].Value = 30+        [int]$col
 +        [object]$value 
 +    ) 
 +    $worksheet.Cells[$row$col].Value = $value 
 +}
  
-Erstellen und Schreiben in das zweite Arbeitsblatt +Funktion zum Hinzufügen einer ganzen Zeile 
-$worksheet2 = $package.Workbook.Worksheets.Add("Sheet2") +function Add-Row { 
-$worksheet2.Cells[11].Value = "Produkt" +    param 
-$worksheet2.Cells[1, 2].Value = "Preis" +        [OfficeOpenXml.ExcelWorksheet]$worksheet, 
-$worksheet2.Cells[2, 1].Value = "Laptop" +        [int]$row
-$worksheet2.Cells[2, 2].Value = 999.99+        [array]$values 
 +    ) 
 +    for ($i = 0; $i -lt $values.Length; $i++) { 
 +        Add-CellValue -worksheet $worksheet -row $row -col ($i + 1) -value $values[$i] 
 +    } 
 +}
  
-# Erstellen und Schreiben in das dritte Arbeitsblatt +Hauptfunktion zum Erstellen der Excel-Datei mit mehreren Arbeitsblättern 
-$worksheet3 = $package.Workbook.Worksheets.Add("Sheet3") +function Create-ExcelFile { 
-$worksheet3.Cells[11].Value = "Land+    param ( 
-$worksheet3.Cells[1, 2].Value = "Hauptstadt" +        [string]$filePath 
-$worksheet3.Cells[2, 1].Value = "Deutschland" +    ) 
-$worksheet3.Cells[2, 2].Value = "Berlin"+ 
 +    # Neues Excel-Paket erstellen 
 +    $package = New-Object OfficeOpenXml.ExcelPackage 
 + 
 +    # Erstellen des ersten Arbeitsblatts und Hinzufügen von Daten 
 +    $worksheet1 Add-Worksheet -package $package -sheetName "Sheet1" 
 +    Add-Row -worksheet $worksheet1 -row 1 -values @("Name", "Alter") 
 +    Add-Row -worksheet $worksheet1 -row 2 -values @("John Doe"30) 
 + 
 +    # Erstellen des zweiten Arbeitsblatts und Hinzufügen von Daten 
 +    $worksheet2 Add-Worksheet -package $package -sheetName "Sheet2
 +    Add-Row -worksheet $worksheet2 -row -values @("Produkt""Preis"
 +    Add-Row -worksheet $worksheet2 -row -values @("Laptop", 999.99) 
 + 
 +    # Erstellen des dritten Arbeitsblatts und Hinzufügen von Daten 
 +    $worksheet3 Add-Worksheet -package $package -sheetName "Sheet3" 
 +    Add-Row -worksheet $worksheet3 -row 1 -values @("Land", "Hauptstadt") 
 +    Add-Row -worksheet $worksheet3 -row -values @("Deutschland", "Berlin") 
 + 
 +    # Datei speichern 
 +    # $package.SaveAs([System.IO.File]::Create($filePath)) # ??? 
 +    $package.SaveAs($filePath) 
 + 
 +    # Bestätigungsausgabe 
 +    Write-Output "Excel-Datei erfolgreich erstellt unter: $filePath" 
 +}
  
-# Datei speichern +Excel-Datei erstellen 
-$package.SaveAs([System.IO.File]::Create($excelFilePath))+Create-ExcelFile -filePath $excelFilePath
  
-# Bestätigungsausgabe 
-Write-Output "Excel-Datei erfolgreich erstellt unter: $excelFilePath" 
 </code> </code>
epplus.1724658505.txt.gz · Zuletzt geändert: 2024/08/26 09:48 von jango