更改Excel中许多文件的格式

时间:2013-06-19 18:17:05

标签: perl excel matlab

我有一个充满了数千个csv文件的文件夹。当我打开一个文件时,数据如下:

20110503    01:46.0  1527.8  1  E
20110503    01:46.0  1537.8  1  E
20110504    37:40.0  1536.6  1  E
20110504    37:40.0  1533.6  1  E
20110504    36:17.0  1531.1  1  E

第二列(时间)具有小数点前的分钟和秒。如果我选择第二列,右键单击并单击格式化单元格,选择时间,然后更改为13:30:55模式,相同的数据如下所示:

20110503    19:01:46 1527.8 1   E
20110503    19:01:46 1537.8 1   E
20110504    0:37:40  1536.6 1   E
20110504    0:37:40  1533.6 1   E
20110504    8:36:17  1531.1 1   E

现在我可以看到小时,分钟和秒钟。我编写了一个读取这些文件的matlab函数,但需要能够读取小时数。该功能只能在我更改格式以显示小时后使用。现在我必须将该函数应用于文件夹中的所有文件。

我想知道,有没有办法更改默认时间显示所以包含小时数?如果没有,有没有办法编写脚本来改变这些文件的格式?谢谢!

注意:我的matlab函数中读取文件的部分如下:

fid = fopen('E:\Tick Data\Data Output\NGU13.csv','rt'); 
c = fscanf(fid, '%d,%d:%d:%d,%f,%d,%*c');

datamat = reshape(c,6,length(c)/6)'; % reshape into matrix

yyyymmdd = datamat(:,1);    
hr = datamat(:,2);             
mn = datamat(:,3);            
sec = datamat(:,4);
pp = datamat(:,5); % price
vv = datamat(:,6); % volume 

在Excel中:

enter image description here

在记事本中,您可以看到小时,分钟,秒和毫秒:

20111206,09:50:56.411,4.320,1,E
20111206,10:02:10.167,4.300,1,E
20111206,11:24:09.052,4.313,1,E
20111206,11:46:09.359,4.307,1,E
20111206,11:50:22.785,4.320,1,E

1 个答案:

答案 0 :(得分:2)

有关类型的记录

20010402, 09:30:24.456, 4.235, 1, E

你应该使用这个fmt:

fmt  = '%f%f:%f:%f.%f%f%*s';
data = textscan(fid, fmt, 'Delimiter',',','CollectOutput',true);