У меня есть 40-50 файлов excel, в которых есть полезная информация в первых ячейках 20x25, а затем мусор за этими ячейками. Какой самый простой способ очистить мусор от всех файлов одним махом, чтобы остались только первые клетки 20x25? Можно ли это сделать с помощью Powershell в Windows?
Обработка файлов excel
2 ответа
IMHO самый простой способ сделать это-макрос 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 и каждый файл открыт. Содержимое сохраняемой области сохраняется внутри, затем весь лист очищается и содержимое записывается обратно на лист. При закрытии файла, он сохраняется без запроса.
вы могли бы сделать Get-Content file.csv | select -First 25 | Export-Csv newfile.csv
Если вы имеете в виду первые 20-25 строк.
Вы могли бы сделать Get-Content -Header @("a","b","c") file.csv | Select a,b,c | Export-Csv newfile.csv
и так далее, чтобы выбрать весь путь через y, который будет вашим 25-м столбцом. Хотя может быть и лучший способ.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]