![为 csv 表格着色](https://linux22.com/image/445530/%E4%B8%BA%20csv%20%E8%A1%A8%E6%A0%BC%E7%9D%80%E8%89%B2.png)
我有一个 CSV 文件,我想让一些条目变成彩色和粗体。例如“bezahlt”应该是绿色和粗体。“unbezahlt”应该是红色和粗体。“offen”应该是黑色和粗体。“unklar”应该是 stealblue 和粗体。
csv 文件的内容
Na,Ku,Re,Be,Da,St
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
\documentclass{article}
\usepackage{newtxtext,newtxmath}
\usepackage{geometry}
\geometry{
a4paper,
total={170mm,240mm},
left=20mm,
top=20mm,
}
\usepackage{csvsimple}
\begin{document}
\section*{Be}
\csvreader[tabular=|l|l|l|c|r|c|c|,
table head=\hline & Na & Ku& Re & Be& Da & St\\\hline,
late after line=\\\hline]%
{Jan2022.csv}{Na=\Na,Ku=\Ku,Re=\Re,Be=\Be,Da=\Da,St=\St}%
{\thecsvrow & \Na&\Ku&\Re&\Be&\Da&\St}%
\end{document}
我不知道如何添加图像来显示输出。但我希望它能清楚地显示我想要实现的目标。
感谢您的帮助
现在的照片
答案1
一个可能的解决方案csvsimple-l3
和tabularray
包装:
对于短表
\documentclass{article}
\usepackage{csvsimple-l3}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{filecontents*}[overwrite]{\jobname.csv}
Na,Ku,Re,Be,Da,St
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
\end{filecontents*}
\begin{document}
\csvreader[
tabularray = {
colspec = {|l|l|l|c|r|c|c|},
cell{2-Z}{Z} = {font=\bfseries},
},
table head = \hline & Na & Ku& Re & Be& Da & St\\\hline,
late after line = \\\hline
]{\jobname.csv}{Na=\Na,Ku=\Ku,Re=\Re,Be=\Be,Da=\Da,St=\St}{
\thecsvrow & \Na & \Ku & \Re & \Be & \Da &
\ifcsvstrcmp{\St}{offen}{\SetCell{fg=gray3}\St}{
\ifcsvstrcmp{\St}{bezahlt}{\SetCell{fg=green3}\St}{
\ifcsvstrcmp{\St}{unbezahlt}{\SetCell{fg=red3}\St}{
\ifcsvstrcmp{\St}{unklar}{\SetCell{fg=azure3}\St}{\St}
}
}
}
}%
\end{document}
适合长桌
\documentclass{article}
\usepackage[b6paper,margin=1.5cm]{geometry}
\usepackage{csvsimple-l3}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{filecontents*}[overwrite]{\jobname.csv}
Na,Ku,Re,Be,Da,St
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
Bl,Bs,631,238.00,15.01.2022,offen
Br,Bg,632,309.40,15.01.2022,bezahlt
Co,Cn,633,309.40,15.01.2022,unbezahlt
Dr,De,634,952.00,15.01.2022,unklar
\end{filecontents*}
\begin{document}
\SetTblrTemplate{head,foot}{empty}
\csvreader[
generic collected table = longtblr,
generic table options = {[
%caption = {My Table Caption},
%label = {my:label},
label = none,
]{
rowhead = 1,
colspec = {|l|l|l|c|r|c|c|},
cell{2-Z}{Z} = {font=\bfseries},
}},
table head = \hline & Na & Ku& Re & Be& Da & St\\\hline,
late after line = \\\hline
]{\jobname.csv}{Na=\Na,Ku=\Ku,Re=\Re,Be=\Be,Da=\Da,St=\St}{
\thecsvrow & \Na & \Ku & \Re & \Be & \Da &
\ifcsvstrcmp{\St}{offen}{\SetCell{fg=gray3}}{
\ifcsvstrcmp{\St}{bezahlt}{\SetCell{fg=green3}}{
\ifcsvstrcmp{\St}{unbezahlt}{\SetCell{fg=red3}}{
\ifcsvstrcmp{\St}{unklar}{\SetCell{fg=azure3}}{}
}
}
}
\St
}%
\end{document}