Writing multiple structures to user specified excel file

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
Azzi Abdelmalek 2016 年 4 月 5 日
Can you give an example?
Ibro Tutic
Ibro Tutic 2016 年 4 月 5 日
Sure, they look like this, in general.

サインインしてコメントする。

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 5 日
編集済み: Azzi Abdelmalek 2016 年 4 月 5 日

0 投票

load Example
v=[struct2cell(Data1.data)]
out=v(:,:)'
xlswrite('file.xlsx',out)

18 件のコメント

Ibro Tutic
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
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
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.
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 5 日
Ok, your data are in one mat file or in different mat files?
Ibro Tutic
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
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
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
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
Ibro Tutic 2016 年 4 月 5 日
That works, but it seems to be overwriting previous entries, how would I get around that?
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 5 日
What do you mean?
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 5 日
maybe you have used my code before editing it. copy it now and try again
Ibro Tutic
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
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
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'.
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 4 月 5 日
post your modified code
Ibro Tutic
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
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
Ibro Tutic
Ibro Tutic 2016 年 4 月 5 日
Oh that worked! Thank you!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by