使用数据工具格式化 CSV 中的复杂表格

使用数据工具格式化 CSV 中的复杂表格

我有这个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}

代码输出

相关内容