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

Anfängerprobleme beim Einlesen einer Excel Tabelle

 

ferryerdmann
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.07.12
Wohnort: Villingen-Schwenningen
Version: 7,6
     Beitrag Verfasst am: 18.07.2012, 22:37     Titel: Anfängerprobleme beim Einlesen einer Excel Tabelle
  Antworten mit Zitat      
Hallo zusammen,

Wie ihr vielleicht meinem Status entnehmen könnt, bin ich erst neu hier.

Nach einigen Nächten der Fehlersuche und aufmerksames lesen der Foreneinträge wende ich mich Hilfe suchend an Euch. Und zwar möchte ich gerne einen Bereich aus einer Excel-Tabelle durch Matlab einlesen lassen. zu diesem Zweck fand ich auch hilfreiche Beispiele in Foren. Mein Code sieht folgendermaßen aus:

Code:
clear all;
clc;

fname = 'Test1.xls';
sheet = 1;
range = 'A1:D14';
%
excel = actxserver('Excel.Application'); % Verbindung zu Excel über ActiveX aufbauen
%
excel.Visible = 0; % Excel sichtbar machen (sonst kann es auch im Hintergrund laufen)
%
excel.Workbooks.Open(fname); % Dokument öffnen
%
excel.ActiveWorkBook.Sheets.Item(sheet).Activate; % passendes Sheet activieren "Item(x)"
%
data = excel.ActiveSheet.Range(range).Value; % Daten aus bestimmten Bereich auslesen
%
% excel.ActiveSheet.Range(range).Value = {'TEST_1' 'TEST_2' 'TEST_3' ; [111] [222] [333]};% oder neue Daten ins Excel übergeben

excel.Quit % Excel beenden
 


Nun zu meiner Frage:
Wieso ließt Matlab nicht die Zahlen aus der Excel Tabelle ein und speichert diese in "data"?

[Bitte Code-Umgebung benutzen, Danke! Jan S]

Test1.xls
 Beschreibung:

Download
 Dateiname:  Test1.xls
 Dateigröße:  9.19 KB
 Heruntergeladen:  409 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.07.2012, 09:23     Titel:
  Antworten mit Zitat      
warum benutzt du nicht einfach
Code:
?
Private Nachricht senden Benutzer-Profile anzeigen
 
ferryerdmann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.07.12
Wohnort: Villingen-Schwenningen
Version: 7,6
     Beitrag Verfasst am: 19.07.2012, 20:49     Titel:
  Antworten mit Zitat      
Weil ich davon ausgehe, dass ich über diese Variante auch xlsx öffnen kann.
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: 20.07.2012, 09:15     Titel:
  Antworten mit Zitat      
Hallo ferryerdmann,

Dann schau doch zumindest mal in den Code von XLSREAD rein. Denn dies enthält genau die gleichen Befehle wie dein Code, zusätzlich aber auch eine Menge Fehler-Abfragen, die sinnvolle Meldungen ausgeben. Falls Dein Code XLSX-Dateien öffnen kann, kann XLSREAD dies also auch.

Allerdings hat XLSREAD den Nachteil, dass es bei jedem Aufruf das ActiveX-Control und das Excel-File neu öffnet und nachher wieder schließt. Falls man auf 200 Ranges in 100 Sheets eines Files zugreifen muss, ist das sehr langsam. Dann lohnt sich ein manueller Aufruf schon. Dazu findet man auch einiges in Matlab's FileExchange (nach "xls" oder "Excel" suchen!).

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
ferryerdmann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.07.12
Wohnort: Villingen-Schwenningen
Version: 7,6
     Beitrag Verfasst am: 20.07.2012, 21:00     Titel:
  Antworten mit Zitat      
Danke für den Hinweis. Ich werde es berücksichtigen und die verkürzte Schreibweise mit xlsread ausprobieren.

Gruß Ferry
Private Nachricht senden Benutzer-Profile anzeigen
 
ferryerdmann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.07.12
Wohnort: Villingen-Schwenningen
Version: 7,6
     Beitrag Verfasst am: 21.07.2012, 23:09     Titel:
  Antworten mit Zitat      
Hallo zusammen;

Nachdem ich den Vorschlag befolgt bin, habe ich nun folgende Frage:

Wie schaffe ich es, dass aus den geladenen Spalten bestimmte Zellen berechnet werden? Denn momentan sind die Spalten aus einer Excel in den "Workspace" geladen worden und warten darauf weiterbearbeitet zu werden.

Nachstehend der aktuelle Quellcode:

% Command Window und Workspace zurücksetzen
clear all;
clc;


% Auswahl des Ordners in dem die Exceldatei liegt
path = uigetdir(pwd,'Select Excel directory'); % Pfadangabe der Excelfiles
path = [path filesep];
file_all = dir(path); % alle Daten im Verzeichniss (Ordner und Files)
file = file_all([file_all.isdir] == 0); % Extraktion der Files

P = cell(1,numel(file)); % pre allocation

if ~isempty(file) % ist der Ordner leer (bzw. keine Files)?
for k = 1:numel(file)
[pathstr, name, ext] = fileparts([path file(k).name]); % Fileinformationen
if strcmp(ext,'.xlsx') % ist die aktuelle file eine Excel-File?, wenn ja-->File einlesen
P{k} = xlsread([path file(k).name]); % Einlesen der Exceldatei

% Spalten auswählen
A = P{k}(:,1); %Spalte A (100)
B = P{k}(:,2); %Spalte B (196)
C = P{k}(:,3); %Spalte C (420)
D = P{k}(:,4); %Spalte D (525)


% Berechnung von Summe Spalte A
SummeA = sum(A);

% Berechnung von Summe Spalte B
SummeB = sum(B);


end
end
end

Auf hilfreiche Ideen, würde ich mich freuen!

Mfg
Ferry
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.