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

neue Daten in eine schon bestehende Exceldatei schreiben

 

Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 15:47     Titel: neue Daten in eine schon bestehende Exceldatei schreiben
  Antworten mit Zitat      
Hallo ihr lieben,

ich hab eine Exceldatei mit ca. 6000 Tabellenblättern. In jedem Tabellenblatt habe ich 4 Spalten aber unterschiedlich viele zeilen.

Ich möchte nun in die 5. Spalte einen Wert aus einer anderen Datei hinzufügen. Wie mache ich das?

Also ich habe eine Ausgangsdatei in Matlab (num), die mir in ihrerer ersten Spalte Zahlen anzeigt (die sind nicht fortlaufend).
Ich möchte nun die Zahl aus der ersten Zeile in das Tabellenblatt 1 und die Zahl aus der zweiten Zeile in Tabellenblatt 2 ... usw. (num und meine Exceldatei sind gleichlang)

Ich dachte da:

xlswrite('Y:\Gruppen\klima\PEP725\nach_Stationen_sortiert\Rosskastanie.xls',num,'F1')

aber irgendwas fehlt noch damit ich an das jeweilige Tabellenblatt auswählen kann ...

kann mir einer von euch helfen?


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 16:07     Titel:
  Antworten mit Zitat      
Code:
doc xlswrite
xlswrite(filename,A,sheet,range)

bei sheet giebt man das tabellenblat an.
allerdings wird das bei 6000 seite ne ewigkeit dauern da du glaub ich das für jedes sheet einzeln machen must.
guck mal bei mathworks in fileexchange obs da nicht ne bessere lösung giebt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 16:09     Titel:
  Antworten mit Zitat      
jupp es dauert eine ewigkeit sowas zu machen Sad

aber wenn ich für das "sheet" einen index kreeiere (von 1:6000 vortlaufend) dann macht matlab das trotzdem nicht -.-

ich schau da mal aber nach
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 16:11     Titel:
  Antworten mit Zitat      
1:6000 wird nicht funktionieren
du müsstest quasi ne schleife bauen quasi 6000 mal xlswrite
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 16:16     Titel:
  Antworten mit Zitat      
also so?

for x=1:length(num)

xlswrite('dateiname.xls',num,x,'F1')

end

?
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 16:22     Titel:
  Antworten mit Zitat      
ja denke schon.. aber müsste dann num(x) sein. du willst ja immer nur das eine elemet da hinschreiben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 16:30     Titel:
  Antworten mit Zitat      
Code:
data = importdata('Y:\Home\pommeren\PEP725\entpackte_Dateien\txt\PEP725_DE_Acer(Acer_platanoides).txt',';',1);
data = data.data;


num = unique(data(:,1));


for x=1:length(num)

xlswrite('Y:\Gruppen\klima\PEP725\nach_Stationen_sortiert\Rosskastanie.xls',num,num(x),'F1')
warning off MATLAB:xlswrite:AddSheet
end



so hier mal der ganze code ... aber er momentan schreibt erkeine weiteren daten in die excel datei ( die datei Rosskastanie besteht schon)
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 16:39     Titel:
  Antworten mit Zitat      
Code:
xlswrite('Y:\Gruppen\klima\PEP725\nach_Stationen_sortiert\Rosskastanie.xls',num(x),x,'F1')
 

meinte ich.
guck mal ob dir http://www.mathworks.co.uk/matlabce.....27236-improved-xlswrite-m hilft. siht so aus als würde das das ganze schneller machen.

edit:
Code:
num=[1;2;3];
for i=1:length(num)
    xlswrite('test.xls',num(i),i,'A1')
end
 
hab das grade mal mit dem neuen xlswrite vom oberen link durchlaufen lassen und es geht weitaus schneller als mit dem alten xlswrite
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 16:59     Titel:
  Antworten mit Zitat      
mmh den code hab ich auch schon gefunden. Aber leider komm ich mit Funktionen gar nicht klar. (ich bin noch ein Anfänger)
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 17:08     Titel:
  Antworten mit Zitat      
mit dem code in xlswrite musst du auch nicht klar kommen. du musst ihn nur in den ordner mit deinem matlab skript kopieren damit er den neuen statt den alten xlswrite für dein problem nimmt. die handhabung bleibt die gleiche.
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 17:13     Titel:
  Antworten mit Zitat      
okay,

er ist in dem ordner

aber dann muss ich doch die function [success, message] in mein skript integrieren oder?

mein problem von oben scheint auch noch nicht behoben zu sein. Ich habs mal ne weile Laufen lassen und in meiner Spalte F steht nichts.
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 17:21     Titel:
  Antworten mit Zitat      
okay, nein, ich hab mich verschrieben ... es funktioniert ^^

jetzt muss ich das nur noch mit der Funktion hinbekommen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.01.2012, 17:22     Titel:
  Antworten mit Zitat      
du solltest es erstmal mit ner beispiel datei versuchen. und nicht mit den 6000 seiten. um die funktion zu testen. [success, message] musst du nicht benutzen. machst du doch beim orignial xlswrite auch nicht. mein beispiel code funktioniert soweit. ich kann dir also nur helfen wenn du deine weiteren fehler genauer beschreibst.
edit:
der import usw klappt aber ja? nicht das da schon fehler sind.
edit2:
wenns jetzt klappt welche funktion? xlswrite? die neue funktioniert genau wie die alte und wird automatisch benutzt weil du sie im selben ordner hast wie dein matlab script. du merkst da keinen unterschied. ist nur schneller
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 17:34     Titel:
  Antworten mit Zitat      
also es funktioniert, wenn ich für meinen dateinamen einen fiktiven nehme ... dann erstellt er mir eine neue datei und schreibt da die Zahlen aus num rein.

mit der schon existierenden datei funktioniert es nur teilweise.

Das könnte daran liegen, dass in meinem (num) die Zahlen nicht ducrhgängig sind. also auf 1 folgt 2 folgt 4 folgt 6
bis jetzt stehen nur die zahlen 1 und 2 im tabellenblatt ... aber weiter nicht.

der import der Daten funktioniert soweit

hier der vollständige Code

Code:
data = importdata('Y:\Home\pommeren\PEP725\entpackte_Dateien\txt\PEP725_DE_Acer(Acer_platanoides).txt',';',1);
data = data.data;


num = unique(data(:,1)); % sucht die jeweiligen Stationen heraus
% und schreibt in die erste Spalte von C nochmal die Stationen und in
% Spalte 2 die restlichen Daten
C = [num2cell(num), arrayfun(@(x) data(data(:,1) == x, 2:end),num , 'Uniformoutput', false)]; % kann denke ich hier ignoriert werden (das sind die Daten die schon in der Tabelle stehen)

numm=(num)'; % hab ich gemacht, weil sonst mein x=1 ist und das nicht funktioniert


for x=1:length(numm)

xlswrite('Y:\Gruppen\klima\PEP725\nach_Stationen_sortiert\Rosskastanie - Copy.xls',numm(x),x,'F1')
warning off MATLAB:xlswrite:AddSheet
end



es kommt keine explizite fehlermeldung.


Kannst du hier an dem Code auch nochmal erklären, wie das mit der Funktion läuft?
 
Julia

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 17:38     Titel:
  Antworten mit Zitat      
okay, dann sollte es also schon schneller laufen, wenn die xlswrite.m datei im ordner ist ...
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.