Verarbeiten von Excel-Dateien

Verarbeiten von Excel-Dateien

Ich habe etwa 40–50 Excel-Dateien, die in den ersten 20 x 25 Zellen nützliche Informationen enthalten, aber dahinter Datenmüll. Was ist der einfachste Weg, um den Datenmüll auf einen Schlag aus allen Dateien zu entfernen, sodass nur die ersten 20 x 25 Zellen übrig bleiben? Kann ich dies mit Powershell unter Windows tun?

Bildbeschreibung hier eingeben

Antwort1

Der einfachste Weg, dies zu tun, ist meiner Meinung nach ein VBA-Makro in Excel:

Sub CleanFiles()
' for each file in a directory
'    open it, delete all cell content around the first 20x25 cells, write it back
' 2015-10-15

    Dim path As String, aFile As String
    Dim arr As Variant

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    path = "D:\TEMP\xls\"          ' must have trailing backslash
    aFile = Dir(path & "*.xls")
    Do While aFile <> ""
        Application.StatusBar = aFile
        aFile = path & aFile
        Workbooks.Open (aFile)

        ' process file content
        arr = ActiveSheet.Range("A1:Y20")
        Cells.Clear
        ActiveSheet.Range("A1:Y20") = arr

        ' save and close WB
        ActiveWorkbook.Close True, aFile
        aFile = Dir
    Loop

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.EnableEvents = False
    Application.StatusBar = False
End Sub

Zunächst werden Bildschirmaktualisierungen und Automakros deaktiviert. Anschließend wird ein bestimmter Ordner nach *.xls-Dateien durchsucht und die einzelnen Dateien geöffnet. Der Inhalt des zu speichernden Bereichs wird intern gespeichert, anschließend wird das gesamte Blatt geleert und der Inhalt wieder in das Blatt geschrieben. Beim Schließen der Datei wird diese ohne Nachfrage gespeichert.

Antwort2

Sie könnten a ausführen, Get-Content file.csv | select -First 25 | Export-Csv newfile.csvwenn Sie die ersten 20-25 Zeilen meinen. Sie könnten a ausführen Get-Content -Header @("a","b","c") file.csv | Select a,b,c | Export-Csv newfile.csvund so weiter in dieser Reihenfolge, um bis y alles auszuwählen, was Ihre 25. Spalte wäre. Es könnte jedoch einen besseren Weg geben.

verwandte Informationen