Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Tabelle aus CSV

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.05.2010
    Beiträge
    46

    Tabelle aus CSV

    Hallo,
    ich hab noch eine Frage.
    Ich versuche gerade eine Tabelle aus einer CSV Datei zu erzeugen.
    Dabei will ich das erste Feld am liebsten nummeriert haben. Sprich:

    |No|Check|Remark|OK|
    |01|TEST | | |

    Die Nummerierung hab ich aber leider nicht hinbekommen:

    Code:
    \documentclass[12pt,oneside,a4paper,headinclude=on,footinclude=of f,DIV=20,BCOR=25mm]{scrartcl}
    \usepackage[ngerman, english]{babel}
    \usepackage{amsmath,amssymb,amsthm,amsfonts,latexs ym}
    \usepackage[latin1]{inputenc}
    \usepackage{courier}
    
    \usepackage{lmodern}
    \usepackage{breqn}
    
    \begin{document}
    
    \makeatletter
    \bgroup
    \catcode`\;=\catcode`\&
    \catcode`\
    =\active%
    \def
    {&&\\ \hline}%
    \begin{tabular}{|p{10cm}|p{3cm}|p{1cm}|}\hline%
    Check;Remark;OK\\
    \input{Checklist1.txt}%
    \end{tabular}%
    \egroup
    \makeatother
    
    \end{document}
    Da ich sehr viele solcher Tabellen habe, würde ich am liebsten eine Datei mit dem Code erstellen, und diese dann mit verschiedenen Parammetern laden:

    \input{Checklist1.txt}{Name=Checklist 1}

    Entsprechend müsste das obige Dokument folgendermaßen aussehen:

    Code:
    \newpage
    \section{\name}
    
    \makeatletter
    \bgroup
    \catcode`\;=\catcode`\&
    \catcode`\
    =\active%
    \def
    {&&\\ \hline}%
    \begin{tabular}{|p{10cm}|p{3cm}|p{1cm}|}\hline%
    Check;Remark;OK\\
    \input{Checklist1.txt}%
    \end{tabular}%
    \egroup
    \makeatother
    Vielleicht hat jemand eine Idee wie ich soetwas umsetzen kann.

    Vielen Dank

    Martin

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.07.2010
    Beiträge
    135
    Suche mal nach dem Paket datatool.

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.04.2005
    Beiträge
    118
    oder etwas einfacher: csvsimple oder csvtools

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    --- Ach, ich bin ja bloed. Sorry, aus Gewohnheit habe ich in Englisch geschrieben.

    You could try pgfplotstable:

    Code:
    \documentclass[a4paper]{article}
    
    \usepackage{pgfplotstable}
    \usepackage{booktabs}
    \usepackage{array}
    \usepackage{colortbl}
    
    \begin{document}
    \thispagestyle{empty}%
    
    \pgfplotstabletypeset[
    	% "header=false" means that the INPUT file has no header
    	% containing column names.
    	header=false,
    	%
    	% columns says which columns should be printed, and in which
    	% order.
    	% If one of them does not exist, pgfplotstable will look for
    	% "create on use//.style".
    	columns={No,0,Remark,OK},
    	%
    	% if you write "create on use//.style=...., you can
    	% define a way some missing column is to be created.
    	% Since Checklist1.txt contains only one column (without name),
    	% all remaining columns have to be created on usage.
    	create on use/OK/.style={
    		% empty.
    	},
    	create on use/Remark/.style={
    		% empty.
    	},
    	create on use/No/.style={
    		% The "No" column should depend on \pgfplotstablerow.
    		create col/assign/.code={%
    			% ... \pgfplotstablerow starts with 0.
    			\pgfmathparse{\pgfplotstablerow+1}%
    			\pgfkeyslet{/pgfplots/table/create col/next content}\pgfmathresult
    			%
    			% note that by default, columns are processed with the
    			% number parser.
    		},
    	},
    	columns/0/.style={
    		% The column "0" is the 0th column in Checklist1.txt .
    		% Since we said "header=false", pgfplotstable reads no column
    		% names from the CSV file; it assigns column indices as column
    		% names.
    		string type,
    		column type=l,
    		column name=Check,
    	},
    	%
    	% some pretty-printing:
    	every head row/.style={before row=\toprule,after row=\midrule},
    	every last row/.style={after row=\bottomrule},
    	%
    	every even row/.style={before row={\rowcolor[gray]{0.9}}},
    ]{Checklist1.txt}
    \end{document}
    The package is a generator for "tabular" environments. It can take its data either from some CSV file (default separator is white space) or from inline tables (i.e. CSV data written in place of a file name).

    Since it is a tabular generator, it can work together with all (?) other LaTeX tabular packages, some of which have been used in the example above. You may want to inspect the pdf manual (for example from http://pgfplots.sourceforge.net/) to see if it suits your needs; it should come with enough examples.

    Disclaimer note: I am author of pgfplotstable.

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.05.2010
    Beiträge
    46
    Hallo,
    ich hab es jetzt mal mit csvsimple probiert. So weit so gut.
    Nun hab ich das Problem, dass ich ganze Sätze einfügen will:

    Motorenöl überprüft und für OK befunden
    Lichtanlage überprüft und funktionstüchtig

    Es ist also eigentlich eine Einreihige Tabelle, wobei die einzelnen Felder unter Umständen sehr lang sind und oft auch Sonderzeichen enthalten.
    Gibt es eine Möglichkeit bei csvsimple den Trennoperator durch einen anderen (beispielsweise |) zu ersetzen, damit ein "," nicht ins nächste Feld kommt?

    Vielen Dank schon mal,
    Englisch ist natürlich kein Problem, aber beim ersten überfliegen scheint mir pgfplotstable etwas zu kompliziert für mich. Aber ich hab das Paket schon mal für Balkendiagramme eingesetzt.

    Martin

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •