Utilisation de pgfplotstable et longtable avec un .csv

Oct 15 2020

J'essaye d'importer un .csv en utilisant longtableet pdfplotstabletypeset. Je n'arrive pas à faire fonctionner la longtablecommande.

\documentclass[12pt,a4paper,oneside]{report}

\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{pgfplotstable}
\usepackage{ragged2e}
\usepackage{pdfpages}
\usepackage{pdflscape}
\usepackage{tikz}
\usepackage{subcaption}

\begin{filecontents*}{MYFILE.csv}
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
Software,A
\end{filecontents*}

\begin{document}

\begin{table}[!htb]
%   \setstretch{1.1}
    \pgfplotstabletypeset[
        column type=,
        col sep=comma, 
        string type,
        begin table={\begin{longtable}{p{5cm}p{10cm}}},
%       begin table={\begin{longtable}{@{*}r||p{1in}@{*}},
            end table={\end{longtable}},
        every head row/.style={
            before row={\toprule},
            after row={\midrule\addlinespace}},
        assign column name/.style={/pgfplots/table/column name={\textbf{#1}}},
        every last row/.style={after row=\midrule},
        every row no 5/.style={after row=\toprule\addlinespace},
        every row no 6/.style={after row=\midrule\addlinespace},
        every row 6 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 14/.style={after row=\toprule\addlinespace},
        every row no 15/.style={after row=\midrule\addlinespace},
        every row 15 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 18/.style={after row=\toprule\addlinespace},
        every row no 19/.style={after row=\midrule\addlinespace},
        every row 19 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 22/.style={after row=\toprule\addlinespace},
        every row no 23/.style={after row=\midrule\addlinespace},
        every row 23 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
        every row no 26/.style={after row=\toprule\addlinespace},
        every row no 27/.style={after row=\midrule\addlinespace},
        every row 27 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    ]{MYFILE.csv}
\end{table}

\end{document}

Réponses

TorbjørnT. Oct 14 2020 at 23:48

Un tableenvironnement ne peut pas traverser les pages, longtableest destiné à être utilisé en dehors de tables. Par conséquent, supprimez \begin{table}et \end{table}. Si vous voulez une légende en haut du tableau, faites par exempleevery head row/.style={before row={\caption{foo}\\\toprule}, ...

SP1 Oct 15 2020 at 14:38

Voici le code qui a fonctionné pour moi:

\pgfplotstabletypeset[
    column type=,
    col sep=comma, 
    string type,
    begin table={\begin{longtable}{p{5cm}p{10cm}}},
        end table={\end{longtable}},
    every head row/.style={
        before row={\toprule},
        after row={\midrule\addlinespace}},
    assign column name/.style={/pgfplots/table/column name={\textbf{#1}}},
    every last row/.style={after row=\midrule},
    every row no 5/.style={after row=\toprule\addlinespace},
    every row no 6/.style={after row=\midrule\addlinespace},
    every row 6 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    every row no 14/.style={after row=\toprule\addlinespace},
    every row no 15/.style={after row=\midrule\addlinespace},
    every row 15 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}},
    every row no 18/.style={after row=\toprule\addlinespace},
    every row no 19/.style={after row=\midrule\addlinespace},
    every row 19 column 0/.style={postproc cell content/.style={@cell content=\textbf{##1}}}
    ]{MYFILE.csv}