EPPlus ist die Standalone DLL für das [[coding:powershell|Powershell]] Modul ImportExcel.
$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])"
}
=====Lesen=====
# Pfad zur EPPlus-DLL und zur Excel-Datei, die gelesen werden soll
$epplusDllPath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\EPPlus.dll"
$excelFilePath = "C:\Users\manuel.zarat\Desktop\Aktuell\DB Backups\Databases.xlsx"
# EPPlus-DLL laden
Add-Type -Path $epplusDllPath
# Funktion zum Laden einer Excel-Datei
function Load-ExcelFile {
param (
[string]$filePath
)
$package = New-Object OfficeOpenXml.ExcelPackage
$package.Load([System.IO.File]::OpenRead($filePath))
return $package
}
# Funktion zum Auswählen eines Arbeitsblatts nach Namen
function Get-Worksheet {
param (
[OfficeOpenXml.ExcelPackage]$package,
[string]$sheetName
)
return $package.Workbook.Worksheets[$sheetName]
}
# 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
}
# Funktion zum Lesen einer ganzen Zeile als Array
function Get-RowValues {
param (
[OfficeOpenXml.ExcelWorksheet]$worksheet,
[int]$row
)
$rowValues = @()
for ($col = 1; $col -le $worksheet.Dimension.End.Column; $col++) {
$cellValue = Get-CellValue -worksheet $worksheet -row $row -col $col
$rowValues += $cellValue
}
return $rowValues
}
# 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"
=====Schreiben=====
# 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