我正在尝试根据 CSV 数据组装发票。我发现了这个例子:结合发票和数据工具来创建序列发票
这是代码:
\documentclass{letter}
\usepackage{invoice}
\usepackage{datatool}
\address{ABC AG \\
Nonamestreet 4 \\
1100 Vienna \\
[email protected]}
\date{16. September 2013}
\begin{document}
\DTLloaddb{bills}{billdata.csv}
\DTLforeach{bills}
{\firstname=firstname,
\lastname=lastname,
\caddress=customeraddress,
\tariffname=tariffname,
\service=service,
\rateperunit=rateperunit,
\unitcount=unitcount}
{
\begin{letter}{\firstname~ \lastname \\ \caddress}
\opening{Invoice} Dear customer \lastname! This is your current bill.
\begin{invoice}{Euro}{20}
\ProjectTitle{\tariffname}
\Fee{Regular charge} {\rateperunit} {\unitcount}
\end{invoice}
\closing{Best regards, ABC AG}
\end{letter}
\clearpage
}
\end{document}
这是我的 CSV 文件:
firstname,lastname,customeraddress,tariffname,service,rateperunit,unitcount
John,Doe,Musterstraße 4,Tariff 1,Call,0.04,4
Andy,Ball,Molenstraat 178B,Tariff 2,Extra,56.78,5
但是,看起来它无法检索除 CVS 文件第一行之外的更多数据。
我想要实现的目标如下: - 拥有一个包含单张发票所有条目(服务、数量、价格等)的数据库
我做错了什么?
答案1
可能有一些项目可以从简化中受益。以下示例将编译 3 个页面,每个页面只有一个超满的 \hbox
这是更简单的 csv。
first,last,address,tariff,service,rate,units
Andy,Ball,Molenstraat 178B,Tariff 2,Extra,56.78,5
John,Doe,Musterstraße 4,Tariff 1,Call,0.04,4
Jane,Doe,Musterstraße 6,Tariff 1,Call,0.04,4
这个包最近已经更新,我修改了一些名称以查看值在您的 mwe 中应用的位置(根据包文档将荷兰语更改为英语或德语)
\documentclass[a4paper,11pt]{letter}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{datatool}
\address{ABC AG \\ Nonamestreet 4 \\ Amsterdam \\ [email protected]}
\date{16. September 2013}
\usepackage[dutch]{invoice}
\DTLloaddb[]{bill}{bills.csv}
\begin{document}
\DTLforeach{bill}{\firstname=first,\lastname=last,\caddress=address,\tariffname=tariff,\service=service,\rateperunit=rate,\unitcount=units}
{
\begin{letter}{\firstname~ \lastname \\ \caddress}
\opening{}Dear \firstname$ $ \lastname. Here is your current bill.
\begin{invoice}{Euro}{20.0}
\ProjectTitle{\tariffname}
\Fee{Regular Charge}{\rateperunit}{\unitcount}
\end{invoice}
\closing{Best regards, ABC AG}
\end{letter}
}
\end{document}
如果您需要用逗号代替货币输出中的小数点,请将其添加到语言行中,例如 \usepackage[dutch,comma]{invoice}