2017-11-03 22 views
0

既存のxlsファイルから判別した名前で新しいxlsファイルを書き込む方法について質問したいと思います。私はこのコードを試して、私が望むように新しいファイルを生成することができますが、破損している可能性があるので、私はそれを開くことができません。他のユーザーがコードを実行するのに柔軟性があるので、私はuigetfileを使用する必要があります。ここに私のコードは次のとおりです。新しいxlsファイルをmatlabの既存のxlsファイルから書き込む際のエラー

%% Select rainfall data 
% Call uigetfile by specifying file name and path as output 
[filename,filepath] = uigetfile('*.xls','Select the rainfall data');  % gets directory from any folder 
fido=fopen(fullfile(filepath,'rainfall.xls'),'w');       % open output file to write 
fidi=fopen(fullfile(filepath,filename));         % open input file 
fwrite(fido,fread(fidi,'*char'));           % copy to output 
fclose(fidi);                % close that input file 
fido=fclose(fido); clear fid* 

それはrainfall.xlsを生成することができますが、私はエクセルを通じてファイルを開くと、コンテンツが混乱(添付画像)です。私はまた、既存のxlsファイルを添付します。私は実際にrainfall.xlsに既存のファイルをコピーするために何をしたいのですか?次にmatlabのテーブルにrainfall.xlsをimporできます。私は、インポートツールを通してそれを生成し、このコードにそれを統合したい:

[![%% Import data from spreadsheet 
% Script for importing data from the following spreadsheet: 
% 
% Workbook: D:\TUM\Study Project\Study Project TUM\raw data\rain gauge\ULL00317_20171102.xls 
% Worksheet: Tabelle1 
% 
% To extend the code for use with different selected data or a different 
% spreadsheet, generate a function instead of a script. 
% Auto-generated by MATLAB on 2017/11/03 19:36:55 
%% Import the data, extracting spreadsheet dates in Excel serial date format 
\[~, ~, raw, dates\] = xlsread('D:\TUM\Study Project\Study Project TUM\raw data\rain gauge\ULL00317_20171102.xls','Tabelle1','A:F','',@convertSpreadsheetExcelDates); 
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''}; 
raw = raw(:,\[2,3,4,5,6\]); 
dates = dates(:,1); 
%% Replace non-numeric cells with NaN 
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells 
raw(R) = {NaN}; % Replace non-numeric cells 
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),dates); % Find non-numeric cells 
dates(R) = {NaN}; % Replace non-numeric Excel dates with NaN 
%% Create output variable 
data = reshape(\[raw{:}\],size(raw)); 
%% Create table 
ULL0031720171102 = table; 
%% Allocate imported array to column variable names 
ULL0031720171102.DatumUhrzeit = datetime(\[dates{:,1}\].', 'ConvertFrom', 'Excel'); 
ULL0031720171102.ULL00317_3 = data(:,1); 
ULL0031720171102.ULL00317_CH31 = data(:,2); 
ULL0031720171102.ULL00317_CH32 = data(:,3); 
ULL0031720171102.ULL00317_1 = data(:,4); 
ULL0031720171102.ULL00317_2 = data(:,5); 
% For code requiring serial dates (datenum) instead of datetime, uncomment 
% the following line(s) below to return the imported dates as datenum(s). 
% ULL0031720171102.DatumUhrzeit=datenum(ULL0031720171102.DatumUhrzeit); 
%% Clear temporary variables 
clearvars data raw dates R; 

あなたは私を助けていただけますか?ご助力ありがとうございます。

これが終了するXLSファイルです:これは混乱にある新しいXLSファイルです Existing xls file

new xls file

+0

同じ質問が繰り返し働いています。 OPのプロフィール活動だけを見てください。 –

答えて

1

freadは、あなたが終わるバイナリファイル(あなたが見る混乱)を読み取り代わりに表形式のファイルを読むためにxlsreadを使用してください。

0

あなたがしていることは、ファイルを何も変更せずに別のファイルにコピーしている場合は、copyfileを使用するだけです。

copyfile(fullfile(filepath,filename),fullfile(filepath,'rainfall.xls')) 

次に、他の既存のコードを使用してデータを読み込み、フォーマットすることができます。あなたがしなければならないのは、ファイル名をスワップすることです。fullfile(filepath,'rainfall.xls')

関連する問題