2016-09-06 4 views
0

私はそれぞれ50個のDATファイルで1つのベースxlsxファイルを含むディレクトリを持っています。私はディレクトリ内の各フォルダ内の独立したワークシートとして50のDATファイルを含む1つのワークブックを作成する必要があります。ワークシートは、タブで区切られたDATファイルの3,4,5列を使用します。ワークシートには6つの列があります。最初の3つは、ディレクトリ内のベースxlsxファイルから取得されます。列4-6は、.DATファイルからの列3-5の値を持たなければならない。私は、必要な作業を行うためにMATLABにコードを書きました。私はそれを実行するたびに、プログラムがクラッシュします。 ソース:Microsoft Excelの 説明:保存されていない文書、私が受信したエラーは、発送は例外xlswrite(ライン219) 起動エラーを、使用してファイルの変換複数の.DATファイルを異なるシートを持つ1つのxlsxブックに添付

エラーです。 ヘルプファイル:xlmain11.chm ヘルプコンテキストID:

コードは次のとおりです。コードでは、files_larswgはベースxlsxファイルです。 procestoがエラーを修正し、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'); 

エンド

答えて

1

あなたがxlswriteを使用するたびに、何をやっていることは、Excelのインスタンスを開いて、ファイルにすべてを書き込もうとし、ファイルを閉じてから、再度これを行うには、ファイルを再オープンされます。ファイルがWindowsでロックされているため、OSにエラーが発生しています(Windowsを使用していると仮定しています)。

Excelで基本となるActiveXServerを使用し、すべてのタブをスプレッドシートに一度書き込んでから保存します。

あなたのコードは、このようなものを広く読んでください。

Excelオブジェクトを作成し、新しく新しいブックを設定します。

あなたのデータ範囲にわたり、その後ループすべきであり、このコードは、ループ内の各項目ごとにシートを追加するシート名を変更し、各セルに次のテキストを作成します。 にデータを書き込む
e = actxserver('Excel.Application'); 
e.Visible = 1; 
w=Add(e.Workbooks) 

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ヘルプページでこのexampleのパターンに従ってください。

関連する問題