Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a dataset in csv file format that I'm loading into pgfplotstable. I can't change the format of the original csv, and being financial data it has a column of item names and two or three explanatory data points at the top of the table. e.g.

\documentclass{article}
\usepackage{array,datatool,pgfplotstable}
  \begin{filecontents}{sample.csv}
    item,2008,2009,2010,2011
     ,Actual,Actual,Forecast,Forecast
     ,GBP,GBP,GBP,GBP
     ,('000),('000),('000),('000) rounded
    Area 1 OP, 1000000,1500000,1750000,250000
    Area 2 OP, 400000,500000, 450000,-50000
    Area 51 OP, 300000,375000,390000,15000
    No P, 1250000, 1000000, 950000, 50000
    Residuals, 800000, 80000, 90000, 10000
  \end{filecontents}

\pgfplotstableread[col sep=comma]{sample.csv}\mystuff

I'm stumped at the next stage which is to typeset \mystuff so I have comma separators and can add a row that sums the 'Area' columns. At the moment to display the table I have to do something like

\begin{document}

\pgfplotstableread[col sep=comma,header=false]{sample.csv}\mystuff

\pgfplotstabletypeset[
  columns/0/.style={string type},
  columns/1/.style={string type},
  columns/2/.style={string type},
  columns/3/.style={string type},
  columns/4/.style={string type}]\mystuff

\end{document}

How do I tag the top three rows as string and the rest of the last four columns as integer type so I can format and transform them?

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

As pgfplotstable does not yet support multiline headers, you need to format the cells on these rows specially. I couldn't get the row styles to do this for me, so ended up formatting each individual cell:

\documentclass{article}
\usepackage{array,datatool,pgfplotstable}
\pgfplotsset{compat=1.6}
  \begin{filecontents}{sample.csv}
    item,2008,2009,2010,2011
     ,Actual,Actual,Forecast,Forecast
     ,GBP,GBP,GBP,GBP
     ,('000),('000),('000),('000) rounded
    Area 1 OP, 1000000,1500000,1750000,250000
    Area 2 OP, 400000,500000, 450000,-50000
    Area 51 OP, 300000,375000,390000,15000
    No P, 1250000, 1000000, 950000, 50000
    Residuals, 800000, 80000, 90000, 10000
  \end{filecontents}

\pgfplotstableread[col sep=comma]{sample.csv}\mystuff

\begin{document}

\pgfplotstabletypeset[
fixed,
display columns/0/.style={string type},
every row 0 column 1/.style={string type},
every row 0 column 2/.style={string type},
every row 0 column 3/.style={string type},
every row 0 column 4/.style={string type},
every row 1 column 1/.style={string type},
every row 1 column 2/.style={string type},
every row 1 column 3/.style={string type},
every row 1 column 4/.style={string type},
every row 2 column 1/.style={string type},
every row 2 column 2/.style={string type},
every row 2 column 3/.style={string type},
every row 2 column 4/.style={string type}]\mystuff

\end{document}

Sample output

Note that I have specified fixed for the default cell formatting. Your original attempt could have just been styled with a singel string type rather than specifying this for each individual column.

share|improve this answer
    
Perfect thanks @andrewswann. I was afraid that would be needed. I suppose the next step is a custom command with a loop that does that for a arbitrary number of rows and columns... –  Tahnoon Pasha Sep 29 '12 at 23:18
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.