将多个.DAT文件转换为具有不同工作表的一个xlsx工作簿

我有一个包含50个DAT文件的目录,每个文件包含一个基本的xlsx文件。 我需要使用这50个DAT文件作为一个独立的工作表在目录中的每个文件夹中制作一个工作簿。 工作表应使用Tab键分隔的DAT文件中的3,4,5列。 工作表应该有6列。 前三个将取自目录中的基本xlsx文件。 。列4-6应具有来自.DAT文件的列3-5中的值。 我在MATLAB中编写了一个代码来做必要的事情。 每次我运行它,程序崩溃。 我收到的错误是

错误使用xlswrite(第219行)调用错误,调度exception:源:Microsoft Excel说明:文档未保存。 帮助文件:xlmain11.chm帮助上下文ID:0。

代码如下:在代码中,files_larswg是基本的xlsx文件。 有没有一个程序纠正错误,并使过程成批处理,以防万一我有10个类似的目录。

date=xlsread('files_larswg.xlsx',1,'A2:C18251'); header_tree={ 'da' , 'mo', 'year', 'tminC', 'tmaxC','prcpmm'}; for k=1:50 k fileID =fopen(sprintf('FortWayneWG%d.dat',k+516)); data = textscan(fileID,'%*d %*d %f %f %f'); fclose(fileID); data=cell2mat(data); sheet_no=sprintf('sheet%d',k); xlswrite('FWYLARSWG_50set.xlsx', data, sheet_no,'D2:F18251'); xlswrite('FWYLARSWG_50set.xlsx', header_tree, sheet_no,'A1:F1'); xlswrite('FWYLARSWG_50set.xlsx', date, sheet_no,'A2:C18251'); 

结束

每次使用xlswrite时,你正在做的是打开一个excel实例,试图将所有内容写入文件,closures文件,然后重新打开文件再次执行。 由于文件被locking在窗口中,您的操作系统出错(假定您正在使用Windows)。

你应该做的是在Excel中使用基础的ActiveXServer ,将所有的标签写入电子表格,然后保存。

你的代码应该广泛地阅读这样的东西。

创build一个Excel对象并设置一个新的新工作簿。

 e = actxserver('Excel.Application'); e.Visible = 1; w=Add(e.Workbooks) 

您应该随后遍历数据范围并写入数据。此代码将为循环中的每个项目添加一个工作表,更改工作表名称,然后在每个单元格中创build以下文本。

 datasheet=Add(e.Sheets) datasheet.Name=sheetname(n) datasheet.Range('A1:B1').Value='test data or your range' 

一旦你完成循环,保存文件,并清理你的Excel对象。

 w.SaveAs('myfile.xls') w.Saved = 1; w.Close; w.delete 

你也应该在Matlab的帮助页面上遵循这个例子的模式。