WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Auswahl eines Excel-Sheets in GUI

 

pepsi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 12:21     Titel: Auswahl eines Excel-Sheets in GUI
  Antworten mit Zitat      
Hallo an alle Wissenden,

ich habe eine GUI erstellt, in der man aus einem Kraft-Weg-Digramm die Steifigkeit und das EModul aus wählbaren Teilabschnitten der Kurve berechnen kann.

Bisher sieht meine Einleseroutine wie folgt aus:

Code:

filename = uigetfile ('*.xls');
[num, txt] =xlsread(filename);

x =num(:,1);           % x-Vektor
y =num(:,2);           % y-vektor

handles.x = x;
handles.y =y ;
guidata(hObject, handles);

axes(handles.axes1);
cla;

plot(x,y,'Linewidth',1.5);
xlabel('Weg[mm]');
ylabel('Kraft[N]');
hold on;

fmax = max (y);
set(handles.Fmax,'String',num2str(fmax,'%7.2f'));

handles.fmax = fmax;
guidata(hObject, handles);
 


Zum Test habe ich immer eine excel-Datei mit nur einem sheet (das war auch nciht spezifisch umbenannt) verwendet. Aus meiner Zugprüfmaschine ziehe ich mir allerdings Excel-Dateien, die je nach Probenumfang aus entsprechend vielen Sheets besteht. Die Sheets haben jetzt auch Namen (Probe 1, Probe 2,...).
Bei diesen Files bekomme ich beim Einlesen auf einmal folgende Fehlermeldung:

??? Attempted to access num(:,1); index out of bounds because size(num)=[0,0].

Umgehen kann ich das nur, indem ich beim Einlesen direkt den Namen des Sheets (z.B. xlsread(filename,'Probe 1')) eingebe.

Meine Frage:

Gibt es auch eine geeignete Abfrage (ähnlich "uigetfile"), in der ich durch die entsprechenden Sheets scrollen kann, um diese dann auszuwählen? Vielleicht irgendwie über xlsinfo, oder so?

Dabke schonmal im Voraus!


pepsi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 15:04     Titel:
  Antworten mit Zitat      
hab doch selber noch eine ganz gute Lösung gefunden, denke ich (zumindest funktionierts...)

für alle, die vll vor ähnlichen Problemen stehen, hier mein Ansatz (bin gerne für Kritik offen, oder Vorschläge, wie es günstiger geht!):

Code:

%---------------------------------------------------------------------
% --- Executes on button press in load_file.
%---------------------------------------------------------------------
function load_file_Callback(hObject, eventdata, handles)
% hObject    handle to load_file (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
filename = uigetfile ('*.xls');

[typ, desc, fmt] = xlsfinfo(filename);

Worksheets = desc (1,:);

set(handles.Probenliste,'String',Worksheets);

handles.Worksheets = Worksheets;
handles.filename =filename;
guidata(hObject, handles);



%---------------------------------------------------------------------
% --- Executes on selection change in Probenliste.
%---------------------------------------------------------------------
function Probenliste_Callback(hObject, eventdata, handles)
% hObject    handle to Probenliste (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns Probenliste contents as cell array
%        contents{get(hObject,'Value')} returns selected item from Probenliste

handles = guidata(hObject);
Worksheets = handles.Worksheets;
filename = handles.filename;

index_selected = get(hObject,'Value');
list = get(hObject,'String');
item_selected = list{index_selected}; % Convert from cell array to string
 
[num, txt] =xlsread(filename,item_selected);

 
 
Danny123
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 01.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2013, 11:07     Titel:
  Antworten mit Zitat      
hey,

der Befehl
set(handles.Probenliste,'String',Worksheets);

funktioniert bei mir nicht, weil Worksheets kein handle ist.

handles.Worksheets = Worksheets hilft mir da auch nicht weiter..
hat es bei dir wirklich so geklappt ?

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.07.2013, 12:12     Titel:
  Antworten mit Zitat      
Hallo Danny123,

Zitat:
Code:
set(handles.Probenliste,'String',Worksheets);

funktioniert bei mir nicht, weil Worksheets kein handle ist.

Damit dieser SET-Befehl funktioniert, muss "Worksheets" kein handle sein, sondern ein String. "handles.Probenliste" muss der Handle sein.
Deswegen verstehe ich das Problem nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.