Procesamiento de archivos de Excel

Procesamiento de archivos de Excel

Tengo entre 40 y 50 archivos de Excel que tienen información útil en las primeras celdas de 20x25 y luego basura más allá de estas celdas. ¿Cuál es la forma más sencilla de limpiar la basura de todos los archivos de una sola vez, de modo que solo queden las primeras celdas de 20x25? ¿Puedo hacer esto usando Powershell en Windows?

ingrese la descripción de la imagen aquí

Respuesta1

En mi humilde opinión, la forma más sencilla de hacer esto es una macro VBA en 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

Primero, la actualización de pantalla y las macros automáticas están deshabilitadas. Luego, se escanea una carpeta específica en busca de archivos '*.xls' y se abre cada archivo. El contenido del área que se va a conservar se guarda internamente, luego se borra toda la hoja y el contenido se vuelve a escribir en la hoja. Al cerrar el archivo, se guarda sin que se le solicite.

Respuesta2

Podrías hacer Get-Content file.csv | select -First 25 | Export-Csv newfile.csvsi te refieres a las primeras 20-25 filas. Podrías hacer a Get-Content -Header @("a","b","c") file.csv | Select a,b,c | Export-Csv newfile.csvy así sucesivamente en ese orden para seleccionar hasta y, que sería tu columna número 25. Aunque podría haber una manera mejor.

información relacionada