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/23 13:59]
jango
epplus [2024/08/27 13:45] (aktuell)
jango [Schreiben]
Zeile 2: Zeile 2:
  
 <code powershell> <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=====
 +<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>
 +
 +=====Schreiben=====
 +<code powershell>
 +# Pfad zur EPPlus-DLL und zur neuen Excel-Datei
 +$epplusDllPath = ".\EPPlus.dll"
 +$excelFilePath = "Test.xlsx"
 +
 +# EPPlus-DLL laden
 +Add-Type -Path $epplusDllPath
 +
 +# Funktion zum Erstellen eines neuen Arbeitsblatts
 +function Add-Worksheet {
 +    param (
 +        [OfficeOpenXml.ExcelPackage]$package,
 +        [string]$sheetName
 +    )
 +    return $package.Workbook.Worksheets.Add($sheetName)
 +}
 +
 +# Funktion zum Hinzufügen von Daten in eine bestimmte Zelle
 +function Add-CellValue {
 +    param (
 +        [OfficeOpenXml.ExcelWorksheet]$worksheet,
 +        [int]$row,
 +        [int]$col,
 +        [object]$value
 +    )
 +    $worksheet.Cells[$row, $col].Value = $value
 +}
 +
 +# Funktion zum Hinzufügen einer ganzen Zeile
 +function Add-Row {
 +    param (
 +        [OfficeOpenXml.ExcelWorksheet]$worksheet,
 +        [int]$row,
 +        [array]$values
 +    )
 +    for ($i = 0; $i -lt $values.Length; $i++) {
 +        Add-CellValue -worksheet $worksheet -row $row -col ($i + 1) -value $values[$i]
 +    }
 +}
 +
 +# Hauptfunktion zum Erstellen der Excel-Datei mit mehreren Arbeitsblättern
 +function Create-ExcelFile {
 +    param (
 +        [string]$filePath
 +    )
 +
 +    # 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 1 -values @("Produkt", "Preis")
 +    Add-Row -worksheet $worksheet2 -row 2 -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 2 -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"
 +}
 +
 +# Excel-Datei erstellen
 +Create-ExcelFile -filePath $excelFilePath
 +
 </code> </code>
epplus.1724414345.txt.gz · Zuletzt geändert: 2024/08/23 13:59 von jango