PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle aus CSV



martinli
08-04-2013, 16:08
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:


\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:



\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

e271
08-04-2013, 16:16
Suche mal nach dem Paket datatool.

jonas88
08-04-2013, 19:28
oder etwas einfacher: csvsimple oder csvtools

Feuersaenger
08-04-2013, 20:53
--- Ach, ich bin ja bloed. Sorry, aus Gewohnheit habe ich in Englisch geschrieben.

You could try pgfplotstable:



\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/<colname>/.style".
columns={No,0,Remark,OK},
%
% if you write "create on use/<colname>/.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.

martinli
09-04-2013, 11:38
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