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

Daten gezielt in Excel schreiben

 

Martinuk
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 19:45     Titel: Daten gezielt in Excel schreiben
  Antworten mit Zitat      
Hallo,

ich möchte gerne Daten aus Matlab in ein Excel schreiben. Konkret in diesem Fall möchte ich Daten einer Struktur schreiben. Ein vereinfachtes Beispiel sieht so aus
Code:

a.f1 = '5';
a.f2 = 'NAN';
a.f3 = 'x5';
a.f4 = struct('p1', 6, 'p3', 8);
a.f5 = 'zz';
xlswrite('MatlabExcel.xls', struct2cell(a), 1, 'B1');
 

Das sieht soweit gut aus. Die Zelle 'B4' im Excel File bleibt leer, genau wie es für meinen Fall sein soll, ist quasi als Platzhalter zu sehen.
Nun möchte ich nachträglich Daten in den Zellenbereich 'B4:B8' einfügen, also 5 zusätzliche Werte. Der Eintrag a.f5 = 'zz' sollte dann in die Zelle 'B9' wandern. Zur Realisierung habe ich im Moment folgenden Codeteil in Verwendung
Code:

excel = actxserver('Excel.Application');
wb = excel.Workbooks.Open('MatlabExcel.xls');
ws = wb.Worksheets.Item('Sheet1');
ws.Range('B4:B8').Insert;
ws.Range('B4:B8').Value = ['a', 'b', 'c', 'd'];
wb.Save;
excel.Quit;
 

Funktioniert soweit, die 5x zusätzlichen Werte werden eingefügt, nur wird der Eintrag a.f5 = 'zz' nicht wie gewünscht in die Zelle 'B9' gerückt, sondern nach Zelle 'C5'.

Warum? Wie muss der Code angepasst warden, dass ich das gewünsche Verhalten erreiche?

Wäre es eleganter/performanter eine Kombination aus xlsread/xlswrite zu verwenden? Ich habe den obigen Ansatz gewählt mit der Idee in weiterer Folge bestimmte Zellen noch gezielt zu formatieren zu können.
Private Nachricht senden Benutzer-Profile anzeigen


Martinuk
Themenstarter

Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 21:42     Titel:
  Antworten mit Zitat      
Hab die Lösung gefunden.

'*.Insert' verschiebt die Zelle nach rechts während '*.EntireRow.Insert' eine ganze Reihe einfügt. Mit dieser Änderung funktioniert es nun wie gewünscht.

Code:

ws.Range('B4:B7').EntireRow.Insert;
 
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.