我有这个csv
文件,格式如下:
商店、产品 1、产品 2、产品 3、产品 4、产品 5、小计 商店 1,15,99,299,75,292,780 商店 2,33,353,429,283,561,1659 商店 3,248,381,403,306,454,1792 商店 4,3,14,42,2,32,93 商店 5,129,37,22,89,39,316 商店 6,147,396,404,221,441,1609 商店 7,1228,998,797,1008,1369,5400
我希望它的格式像图中那样。
因为csv
文件是按原样提供的,将动态加载。是否可以只使用datatool
而不重新格式化来做这种工作csv
?(例如使用 Excel 重新格式化,然后导出到新csv
文件)。
答案1
以 Alan 的例子为例,并对其进行修改,您可以使用各种计算函数来datatool
执行类似
\documentclass{article}
\usepackage{booktabs,datatool}
\usepackage[margin=1in]{geometry}
\DTLloaddb{stores}{stores.csv}
\newcommand*\calcpercent[1]{%
\DTLdiv{\tmp}{#1}{\subtotal}%
\DTLmul{\tmp}{\tmp}{100}%
\DTLround{\tmp}{\tmp}{1}%
\tmp\,\%
}
\def\total{0}
\DTLforeach{stores}{\subtotal=Sub Total}{\DTLadd{\total}{\total}{\subtotal}}
\begin{document}
\begin{tabular}{llllllll}
Header row
\DTLforeach{stores}{%
\store=Store,%
\one=Product 1,%
\two=Product 2,%
\three=Product 3,%
\four=Product 4,%
\five=Product 5,%
\subtotal=Sub Total%
}{%
\\
\store & \one & \two & \three & \four & \five & \subtotal
&
\DTLdiv{\tmp}{\subtotal}{\total}%
\DTLmul{\tmp}{\tmp}{100}%
\DTLround{\tmp}{\tmp}{1}%
\tmp\,\%
\\
& \calcpercent{\one}
& \calcpercent{\two}
& \calcpercent{\three}
& \calcpercent{\four}
& \calcpercent{\five}
}\\
\end{tabular}
\end{document}
我在这里没有做任何格式化,但总体思路应该很清楚。(我还要注意,LaTeX 是一种排版系统:如果您需要进行大量处理,请考虑使用脚本工具(如 Perl、Python 或 Lua)将输入的 .csv 预处理为包含结果的修改版本。)
答案2
是的,这是 CSV 文件的标准格式。(假设您的示例 CSV 文件名为stores.csv
)
\documentclass{article}
\usepackage{datatool}
\usepackage[margin=1in]{geometry}
\begin{document}
\DTLloaddb{stores}{stores.csv}
\DTLdisplaydb{stores}
\end{document}