我有一个 .csv 文件,如下所示:
{one},{two},{three}
11/07/2014,14:49:54,(100,100)
2,2,2
我有一些从.csv 文件创建表的代码。
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{pgfplotstable}
% Setup siunitx:
\sisetup{
round-mode = places, % Rounds numbers
round-precision = 2, % to 2 places
}
\begin{table}[h!]
\begin{center}
\caption{Autogenerated table from .csv file.}
\label{table1}
\pgfplotstabletypeset[
multicolumn names, % allows to have multicolumn names
col sep=comma, % the seperator in our .csv file
display columns/0/.style={
column name=$Value 1$, % name of first column
column type={S},string type}, % use siunitx for formatting
display columns/1/.style={
column name=$Value 2$,
column type={S},string type},
display columns/1/.style={
column name=$Value 3$,
column type={S},string type},
every head row/.style={
before row={\toprule}, % have a rule at top
after row={
\si{\ampere} & \si{\volt} & \si{\tesla} \\ % the units seperated by &
\midrule} % rule under units
},
every last row/.style={after row=\bottomrule}, % rule at bottom
]{/path/to/file/table.csv} % filename/path to file
\end{center}
\end{table}
\end{document}
摘自教程
但是,每个包含“,”或“:”的 csv 单元格都会出现错误。
内容如下:
Package PGF Math Error: Could not parse input '(100,100)'
|75 error| Package PGF Math Error: Could not parse input '00:04:00'
我尝试了常见的方法,将单元格包裹在“”或{}中,但无济于事。
答案1
我本来想用评论来指出一些问题,但我现在还不能;尽管这还不是完整的答案……
当我最小化您的示例并使其编译时(文档尚未开始),我得到了
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{pgfplotstable} \pgfplotsset{compat=1.14}
\usepackage{filecontents}
\begin{filecontents}{table.csv}
{one},{two},{three}
11/07/2014,14:49:54,(100,100)
2,2,2
\end{filecontents}
\begin{document}
% Setup siunitx:
\sisetup{round-mode = places, round-precision = 2 }
\pgfplotstableread[
multicolumn names, % allows to have multicolumn names
col sep=comma, % the seperator in our .csv file
display columns/0/.style={
column name=$Value 1$, % name of first column
column type={S},string type},
display columns/1/.style={
column name=$Value 2$,
column type={S},string type},
display columns/1/.style={
column name=$Value 3$,
column type={S},string type},
every head row/.style={
before row={\toprule}, % have a rule at top
after row={
\si{\ampere} & \si{\volt} & \si{\tesla} \\
\midrule} % rule under units
},
every last row/.style={after row=\bottomrule},
]{table.csv} …
\end{document}
然后它会显示有用的错误消息:
软件包 pgfplots 错误:表“table.csv”的第 5 行似乎有太多列:忽略“100””。PGFPlots 发现列数大于之前确定的列数。请验证每个单元格条目是否正确分隔(如有必要,请使用括号 {}。还要验证列名是否为纯 ASCII。)。此错误并不严重。
接下来我建议
- 将坐标分隔符替换为逗号以外的其他符号(用于 csv)或
- 将单元格分隔符的逗号替换为分号
下次还请考虑:
- 创建最小工作示例(通常称为 MWE)
- 并将其放在一个文件中(参见文件内容)
因为专业人士(可能能够立即帮助您)不会浪费时间为您做这件事。