DTLforeach - nur 10 Spalten möglich?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: DTLforeach - nur 10 Spalten möglich?

von esdd » Fr 20. Nov 2015, 10:13

Dir sollte eigentlich klar sein, dass der Code immer noch bei keinem anderen läuft - mangels der csv Dateien.

Irgendwie scheint es Probleme mit den Leerzeichen als Spaltentrenner zu geben. Bei mir werden mit diesem Spaltentrenner die ersten beiden Spalten der csv Dateien als eine gemeinsame Spalte aufgefasst, weshalb dann die letzte fehlt.

Folgendes, also mit ; als Spaltentrenner, funktioniert bei mir dagegen:
\begin{filecontents*}{einetabelle.csv}
1;2;3;4;5;6;7;8;9;10;11
\end{filecontents*}
\begin{filecontents*}{anderetabelle.csv}
a;b;c;d;e;f;g;h;i;j;k
\end{filecontents*}

\documentclass{scrartcl} 
\usepackage[utf8]{inputenc} 
\usepackage{datatool} %Daten aus CSV lesen 
\usepackage{tabularx} 
\usepackage{pdflscape} 
\DTLnewdbonloadfalse 
\DTLsetseparator{;} %Trennzeichen zwischen Werten in den CSV Dateien 


\begin{document} 
\begin{landscape} 
\DTLnewdb{tabelle}
\DTLloaddb[noheader]{tabelle}{einetabelle.csv} 
\DTLloaddb[noheader]{tabelle}{anderetabelle.csv} 
\noindent 
\begin{table} 
\tiny 
\centering 
\caption{Überschrift} 
\begin{tabularx}{1.3\textheight}{l X X X X X X X X X X} 
\shortstack{$Testschritt$\\ \null}&\shortstack{$U_{mean}$\\$in~V$}&\shortstack{$I_{mean}$\\$in~A$}&\shortstack{$I_{Block}$\\$in~A$}&\shortstack{$M_{mean_{U1}}$\\$in~Nm$}&\shortstack{$M_{mean_{U2}}$\\$in~Nm$}&\shortstack{$M_{mean_{U3}}$\\$in~Nm$}&\shortstack{$M_{Block}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U1}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U2}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U3}}}$\\$in~Nm$} 
\tabularnewline 
\hline 
\DTLforeach{tabelle}{\sI=Column1,\sII=Column2,\sIII=Column3,\sIV=Column4,\sV=Column5,\sVI=Column6,\sVII=Column7,\sVIII=Column8,\sIX=Column9,\sX=Column10,\sXI=Column11}{% 
   \sI&\sII&\sIII&\sIV&\sV&\sVI&\sVII&\sVIII&\sIX&\sX&\sXI% 
   \DTLiflastrow{}{\tabularnewline}% 
   } 
\end{tabularx} 
\end{table} 
\end{landscape} 
\end{document} 

von ionas » Fr 20. Nov 2015, 08:17

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{datatool} %Daten aus CSV lesen
\usepackage{tabularx}
\usepackage{pdflscape}
\DTLnewdbonloadfalse
\DTLsetseparator{   } %Trennzeichen zwischen Werten in den CSV Dateien


\begin{document}
\begin{landscape}
\DTLnewdb{tabelle}
\DTLloaddb[noheader]{tabelle}{einetabelle.csv}
\DTLloaddb[noheader]{tabelle}{anderetabelle.csv}
\noindent
\begin{table}
\tiny
\centering
\caption{Überschrift}
\begin{tabularx}{1.3\textheight}{l X X X X X X X X X X}
\shortstack{$Testschritt$\\ \null}&\shortstack{$U_{mean}$\\$in~V$}&\shortstack{$I_{mean}$\\$in~A$}&\shortstack{$I_{Block}$\\$in~A$}&\shortstack{$M_{mean_{U1}}$\\$in~Nm$}&\shortstack{$M_{mean_{U2}}$\\$in~Nm$}&\shortstack{$M_{mean_{U3}}$\\$in~Nm$}&\shortstack{$M_{Block}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U1}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U2}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U3}}}$\\$in~Nm$}
\tabularnewline
\hline
\DTLforeach{tabelle}{\sI=Column1,\sII=Column2,\sIII=Column3,\sIV=Column4,\sV=Column5,\sVI=Column6,\sVII=Column7,\sVIII=Column8,\sIX=Column9,\sX=Column10,\sXI=Column11}{%
  \sI&\sII&\sIII&\sIV&\sV&\sVI&\sVII&\sVIII&\sIX&\sX&\sXI%
  \DTLiflastrow{}{\tabularnewline}%
  }
\end{tabularx}
\end{table}
\end{landscape}
\end{document}
Der Code funktioniert.
Kompiliert bei mir auch durch ... Ich weiß nicht, wo der Fehler in meinem speziellen Fall ist. Ich arbeite mit sehr vielen Variablen und Ebenen in den Dokumenten ...
Weitersuchen ... :-(

von esdd » Fr 20. Nov 2015, 01:40

Dein Code ist bei mir nicht lauffähig. Ich bekomme mit ihm als erstes die Fehlermeldung: !LaTeX Error: \usepackage before \documentclass

DTLforeach - nur 10 Spalten möglich?

von ionas » Do 19. Nov 2015, 12:01

Hallo!

Ich bin gerade dabei Tabellen mit externen .csv-Daten zu befüllen.
Für unterschiedliche Tabellen mache ich das immer analog und bis zu 10 Spalten geht das wunderbar.
Wenn ich jetzt column11 hinzufüge meckert er:

! Package datatool Error: Can't assign \sXI : there is no key `Column11' in dat

Hier mein Code:
\usepackage{datatool} %Daten aus CSV lesen
\DTLnewdbonloadfalse
\DTLsetseparator{	} %Trennzeichen zwischen Werten in den CSV Dateien
\DTLloaddb[noheader]{tabelle}{einetabelle.csv}
\DTLloaddb[noheader]{tabelle}{anderetabelle.csv}

\noindent
\begin{table}[H]
\tiny
\centering
\caption{Überschrift}
\begin{tabularx}{1.3\textheight}{l X X X X X X X X X X}
\shortstack{$Testschritt$\\ \null}&\shortstack{$U_{mean}$\\$in~V$}&\shortstack{$I_{mean}$\\$in~A$}&\shortstack{$I_{Block}$\\$in~A$}&\shortstack{$M_{mean_{U1}}$\\$in~Nm$}&\shortstack{$M_{mean_{U2}}$\\$in~Nm$}&\shortstack{$M_{mean_{U3}}$\\$in~Nm$}&\shortstack{$M_{Block}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U1}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U2}}}$\\$in~Nm$}&\shortstack{$M_{\Delta_{max_{U3}}}$\\$in~Nm$}
\tabularnewline
\hline
\DTLforeach{tabelle}{\sI=Column1,\sII=Column2,\sIII=Column3,\sIV=Column4,\sV=Column5,\sVI=Column6,\sVII=Column7,\sVIII=Column8,\sIX=Column9,\sX=Column10,\sXI=Column11}{%
  \sI&\sII&\sIII&\sIV&\sV&\sVI&\sVII&\sVIII&\sIX&\sX&\sXI%
  \DTLiflastrow{}{\tabularnewline}%
  }
\end{tabularx}
\end{table}

Wie gesagt, wenn ich sXI und \sXI=Column11 lösche macht er alles wie gewünscht nur die letzte Spalte ist dann nicht mit Werten befüllt und ich weiß nicht wieso es so nicht klappt ...

Danke

Nach oben