Ich habe eine CSV-Datei und möchte diese in meinen Bericht importieren. Dazu nutze ich 'csvsimple'. Leider werden jedoch Sonderzeichen, wie das %-Zeichen (Zeile 6), nicht importiert. Im Minimalbeispiel ist zu sehen, dass alle anderen Zeichen, die nach dem Prozentzeichen kommen, einfach abgeschnitten werden. Öffne in Overleaf
\documentclass{scrartcl} \usepackage[english]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{booktabs} \usepackage{tabularx} \usepackage{csvsimple} \usepackage{filecontents} \begin{filecontents*}{data.csv} 00:00: 0.0,MALFUN,Failure of ACC-1/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-1/HL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-2/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-2/HL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-3/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-3/HL (1 = FAILED) (param.: 1) ,MALFUN,Small break in CL-2 (max 100 cm**2) (Break 70% open) ,MALFUN,HP injection pump TH25 (failure to run) ,MALFUN,HP injection pump TH35 (failure to run) ,MALFUN,HP injection pump TH45 (failure to run) ,MALFUN,LP injection pump TH20 (failure to run) ,MALFUN,LP injection pump TH30 (failure to run) ,MALFUN,LP injection pump TH40 (failure to run) ,MALFUN,LP injection pump TH17 (failure to run) ,MALFUN,LP injection pump TH37 (failure to run) 00:00: 0.7,EVENT,RCS voiding starts in Core 00:00: 2.0,SIGNAL,Containment Pressure > 1.03 bar ,SIGNAL,Reactor SCRAM initiation 00:00: 5.1,SIGNAL,Turbine Trip (TSV close) 00:00: 5.1,SYSTEM,VALVE TSV : started to CLOSE from fully open position 00:00: 6.4,SYSTEM,VALVE 0TA11S004 : started to OPEN from fully closed position 00:00: 8.1,SYSTEM,VALVE TSV : fully CLOSED 00:00: 9.5,SIGNAL,Pressurizer Pressure < 133.0 bar 00:00:13.0,SYSTEM,VALVE 0TA11S004 : fully CLOSED \end{filecontents*} \begin{document} \begin{tabularx}{\textwidth}{lllX} \toprule & \textbf{Zeit} & \textbf{Typ} & \textbf{Beschreibung}\\ \midrule \csvreader[respect all=true, late after line=\\, late after last line=\\\bottomrule]% {data.csv}% {}% {\thecsvrow & \csvcoli & \csvcolii & \csvcoliii} \end{tabularx} \end{document} |
Du verwendest genau genommen Öffne in Overleaf
\documentclass{scrartcl} \usepackage[english]{babel} \usepackage[utf8]{inputenc}% utf8x bereitet teilweise Probleme \usepackage[T1]{fontenc} \usepackage{booktabs} %\usepackage{tabularx}% für dieses Beispiel nun überflüssig \usepackage{csvsimple} \usepackage{filecontents} \begin{filecontents*}{data.csv} 00:00: 0.0,MALFUN,Failure of ACC-1/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-1/HL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-2/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-2/HL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-3/CL (1 = FAILED) (param.: 1) ,MALFUN,Failure of ACC-3/HL (1 = FAILED) (param.: 1) ,MALFUN,Small break in CL-2 (max 100 cm**2) (Break 70% open) ,MALFUN,HP injection pump TH25 (failure to run) ,MALFUN,HP injection pump TH35 (failure to run) ,MALFUN,HP injection pump TH45 (failure to run) ,MALFUN,LP injection pump TH20 (failure to run) ,MALFUN,LP injection pump TH30 (failure to run) ,MALFUN,LP injection pump TH40 (failure to run) ,MALFUN,LP injection pump TH17 (failure to run) ,MALFUN,LP injection pump TH37 (failure to run) 00:00: 0.7,EVENT,RCS voiding starts in Core 00:00: 2.0,SIGNAL,Containment Pressure > 1.03 bar ,SIGNAL,Reactor SCRAM initiation 00:00: 5.1,SIGNAL,Turbine Trip (TSV close) 00:00: 5.1,SYSTEM,VALVE TSV : started to CLOSE from fully open position 00:00: 6.4,SYSTEM,VALVE 0TA11S004 : started to OPEN from fully closed position 00:00: 8.1,SYSTEM,VALVE TSV : fully CLOSED 00:00: 9.5,SIGNAL,Pressurizer Pressure < 133.0 bar 00:00:13.0,SYSTEM,VALVE 0TA11S004 : fully CLOSED \end{filecontents*} \newlength{\lastcolumn} \begin{document} \settowidth{\lastcolumn}{9900:00:00.0MALFUN} \setlength{\lastcolumn}{\dimexpr \textwidth-8\tabcolsep-\lastcolumn\relax} \csvreader[tabular=lllp{\lastcolumn}, table head = \toprule & \textbf{Zeit} & \textbf{Typ} & \textbf{Beschreibung}\\\midrule, table foot = \bottomrule, respect all, late after line=\\, late after last line=\\\bottomrule]% {data.csv}% {}% {\thecsvrow & \csvcoli & \csvcolii & \csvcoliii} \end{document} Natürlich könnte man die CSV-Daten auch zunächst einmal einlesen, um statt mit einem festen Muster die tatsächliche Maximalbreite der vorderen Spalten zu ermitteln. Eventuell wäre für solche Dinge dann beantwortet 04 Dez '17, 11:56 saputello @saputello Du schreibst "Du verwendest genau genommen csvreader in der ersten Spalte einer Tabellenzeile." Ich habe mich dabei an einem Beispiel (Seite 4) in der Doku von ´csvsimple´ orientiert. Aber mit deiner Lösung funktioniert es einwandfrei. Herzlichen Dank!
(04 Dez '17, 15:59)
dzaic
@dzaic: Das gilt für das Beispiel in der Anleitung genauso. Und es ändert nichts daran, dass es problematisch ist. Dort funktioniert es, weil die Randbedingungen passen. Bei Dir passen sie nicht. Wobei auch in der Anleitung steht, dass es more preferrable ist, die Tabelle samt Kopf und Fuß von
(04 Dez '17, 16:09)
saputello
|