Обработка файлов Excel

Обработка файлов Excel

У меня есть около 40-50 файлов Excel, в которых есть полезная информация в первых ячейках 20x25, а за этими ячейками — мусор. Как проще всего очистить все файлы от мусора одним махом, чтобы остались только первые ячейки 20x25? Можно ли это сделать с помощью Powershell в Windows?

введите описание изображения здесь

решение1

На мой взгляд, самый простой способ сделать это — использовать макрос VBA в 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

Сначала отключаются обновление экрана и автомакросы. Затем определенная папка сканируется на наличие файлов '*.xls' и каждый файл открывается. Содержимое области, которую нужно сохранить, сохраняется внутри, затем весь лист очищается, а содержимое записывается обратно на лист. При закрытии файла он сохраняется без запроса.

решение2

Вы можете сделать a, Get-Content file.csv | select -First 25 | Export-Csv newfile.csvесли вы имеете в виду первые 20-25 строк. Вы можете сделать a Get-Content -Header @("a","b","c") file.csv | Select a,b,c | Export-Csv newfile.csvи так далее в этом порядке, чтобы выбрать все до y, что будет вашим 25-м столбцом. Хотя может быть и лучший способ.

Связанный контент