Removing the top rows of a csv file

조회 수: 13 (최근 30일)
MATLAB90
MATLAB90 2021년 2월 17일
댓글: Harsimran Singh 2021년 5월 3일
I have a folder with multiple .csv files, similar to the one attached here. I am trying to remove the top rows of this csv file (everything until the row with Time and Trace). I need a script to run through the folder, delete all the top row portion of the files and resave them. Could you please help me with that? Thank you.
  댓글 수: 1
Harsimran Singh
Harsimran Singh 2021년 5월 3일
use this link, it works perfectly for me:
Option Explicit
Sub FixCsvFiles()
Dim SelectFolder As String
Dim csvFiles As Variant
Dim csvWb As Workbook
Dim x As Integer
'browse for folder with csv files
On Error GoTo FixCsvFiles_Error
SelectFolder = GetFolder("c:\")
Application.ScreenUpdating = False
'Check user did not cancel folder selection
If SelectFolder = "" Then
MsgBox "No Folder Selected - Cannot continue", vbCritical
End
End If
SelectFolder = SelectFolder & "\"
csvFiles = Dir(SelectFolder & "*.csv")
Do While csvFiles <> ""
Set csvWb = Workbooks.Open(SelectFolder & csvFiles)
Rows("1:2").Delete
x = x + 1
csvWb.Close True
csvFiles = Dir
Loop
Application.ScreenUpdating = True
MsgBox "A total of " & CStr(x) & " files processed", vbInformation
On Error GoTo 0
Exit Sub
FixCsvFiles_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure FixCsvFiles of Module2"
End Sub
Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "BROWSE TO FOLDER LOCATION WITH CSV FILES"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2021년 2월 18일
편집: Jan 2021년 2월 25일
Folder = 'D:\Your\Folder';
FileList = dir(fullfile(Folder, '*.csv'));
for iFile = 1:numel(FileList)
File = fullfile(Folder, FileList(iFile).name);
% Read the file:
FID = fopen(File, 'r');
if FID < 0
error('Cannot open file: %s', File);
end
C = fread(FID, [1, inf], '*char'); % [EDITED] inf -> [1, inf]
fclose(FID);
index = strfind(C, 'Time (s)');
if numel(index) ~= 1
error('Key not found in file: %s', File);
end
% Write cropped contents:
FID = fopen(File, 'w');
if FID < 0
error('Cannot open file: %s', File);
end
fwrite(FID, C(index:numel(C)), '*char');
fclose(FID);
end
Create a backup at first or write to a new folder:
InFolder = 'D:\Your\Folder';
FileList = dir(fullfile(InFolder, '*.csv'));
OutFolder = 'D:\Your\FolderModified';
mkdir(OutFolder);
for iFile = 1:numel(FileList)
InFile = fullfile(InFolder, FileList(iFile).name);
...
OutFile = fullfile(OutFolder, FileList(iFile).name);
...
end
  댓글 수: 7
Jan
Jan 2021년 2월 25일
Now I see it: the FREAD command relied a column vector but STRFIND expects a ow vector. I've fixed this in the code above.
MATLAB90
MATLAB90 2021년 2월 25일
Thank you for your time and all the help. It works perfectly now.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Adding custom doc에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by