現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
Writing multiple structures to user specified excel file
1 回表示 (過去 30 日間)
古いコメントを表示
I have a variable amount of structures with 4 fields, each containing 1x1 blocks of data. How would I go about writing multiple structures to a user specified excel file?
2 件のコメント
採用された回答
Azzi Abdelmalek
2016 年 4 月 5 日
編集済み: Azzi Abdelmalek
2016 年 4 月 5 日
load Example
v=[struct2cell(Data1.data)]
out=v(:,:)'
xlswrite('file.xlsx',out)
18 件のコメント
Ibro Tutic
2016 年 4 月 5 日
What if I have multiple structures to consider? Essentially the program allows calculations to be ran against user specified mat files that contain damage information, for each file they select, another structure is created. What I need it for every structure to be outputted to the same, user-specified excel file.
Azzi Abdelmalek
2016 年 4 月 5 日
You need to provide more details, how many fields for each data? do you want to store the data in different sheets?
Ibro Tutic
2016 年 4 月 5 日
The data is exactly the same as that example, but instead of being 10x4, it might be 200x4, or 150x4, but the heading and everything is exactly the same. The data does not need to be stored in different sheets. Also, the PINs are unique, not in numerical order like I had put in the example (not sure if it's confidential information or not). Just imagine having n structures within one structure, with data corresponding to PIN, Displacement, Damage, and hours in each of the structures.
Ibro Tutic
2016 年 4 月 5 日
Well, the data is created within the program and stored as a variable, so it is all in one file.
Azzi Abdelmalek
2016 年 4 月 5 日
You have to make things clear. all your variables are stored in one mat file? do you mean that you are creating several variables with different names? If it's in the program, can you show us the part of your program that are creating these variables, because it's a bad idea to create different variables names, when you can store all your data in one variable
Ibro Tutic
2016 年 4 月 5 日
The code is below. The program reads a mat file, copies the data to a structure, reads another mat file, copies similar data to another structure, and so on.
Essentially, if the user selects two mat files to be processed, two structures would be created. I then need these two structures to be exported to an excel spreadsheet, the same spreadsheet, on the same page.
filepath1 = 'C:\Users\it58528\Desktop\13.5 Stuff\13.5 Mat Files\';
filename = uigetfile('*.*', 'All Files (*.*)','MultiSelect','on');
for n=1:length(filename)
data1{n} = load([filepath1 filename{n}]);
end
for i=1:length(data1)
for j=1:length(data1{i}.PIN)
Data(i).data(j).PIN = data1{i}.PIN(j).PIN;
Data(i).data(j).hours = data1{i}.PIN(j).hours;
Data(i).data(j).Disp = data1{i}.PIN(j).Displacement;
Data(i).data(j).damage = sum(sum((data1{i}.PIN(j).LoadProfilePercent.*DamagenewTable),1));
end
end
Azzi Abdelmalek
2016 年 4 月 5 日
編集済み: Azzi Abdelmalek
2016 年 4 月 5 日
filename = uigetfile('*.*', 'All Files (*.*)','MultiSelect','on');
for n=1:length(filename)
data1{n} = load(filename{n});
end
out=[];
for i=1:length(data1)
v=[struct2cell(data1{i}.Data1.data)]
out=[out;v(:,:)']
end
xlswrite('file.xlsx',out)
Ibro Tutic
2016 年 4 月 5 日
That works, but it seems to be overwriting previous entries, how would I get around that?
Azzi Abdelmalek
2016 年 4 月 5 日
maybe you have used my code before editing it. copy it now and try again
Ibro Tutic
2016 年 4 月 5 日
Well, here is the code I adapted from yours.
for i=1:length(data1)
v=[struct2cell(Data(i).data)];
out=[v(:,:)'];
end
So what it does is it goes through the structure Data(1).data, converts it to a cell array, cleans up the formatting, and is stored in the variable 'out'. Now when it moves on to the second part of the structure, Data(2).data, the data from the first structure (Data(1).data) are overwritten, leaving only data from Data(2).data in the cell array. What I need is for them both to be in the same table.
Azzi Abdelmalek
2016 年 4 月 5 日
This is not my code, What I've posted is:
out=[];
for i=1:length(data1)
v=[struct2cell(data1{i}.Data1.data)]
out=[out;v(:,:)']
end
Ibro Tutic
2016 年 4 月 5 日
Your code attempts to access a non-existent structure, I simply modified it so it does what I need it to do. The issue is still the same, the data from one structure is getting over written, but I need all the data to be in a single variable, 'out'.
Ibro Tutic
2016 年 4 月 5 日
filepath1 = 'C:\Users\it58528\Desktop\13.5 Stuff\13.5 Mat Files\';
filename = uigetfile('*.*', 'All Files (*.*)','MultiSelect','on');
for n=1:length(filename)
data1{n} = load([filepath1 filename{n}]);
end
for i=1:length(data1)
for j=1:length(data1{i}.PIN)
Data(i).data(j).PIN = data1{i}.PIN(j).PIN;
Data(i).data(j).hours = data1{i}.PIN(j).hours;
Data(i).data(j).Disp = data1{i}.PIN(j).Displacement;
Data(i).data(j).damage = sum(sum((data1{i}.PIN(j).LoadProfilePercent.*DamagenewTable),1));
end
end
for i=1:length(data1)
v=[struct2cell(Data(i).data)];
out=[v(:,:)'];
end
Azzi Abdelmalek
2016 年 4 月 5 日
You did not look at my code!
out=[]
for i=1:length(data1)
v=[struct2cell(Data(i).data)];
out=[out;v(:,:)'];
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Spreadsheets についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
アジア太平洋地域
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)