如何使用以下命令将 tabela.xls 用作 LaTeX 表或甚至使用 TikZ 制作的表的数据源?注意:我想将 tabela.xls 用作多个文件的数据源。Tex 并且当我更改 tabela.xls 时它会同步。
\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes,nodes={minimum width=1.5cm}] at (0,0)
{
1 & Knuth & 10\\
2 & Lamport & 10\\
3 & Mittelbach & 7\\
4 & Oetiker & 7\\
};
\end{tikzpicture}
\end{document}
答案1
遗憾的是,没有办法直接使用xls
LaTeX 文件,更准确地说OLE 2 Compound Document
是二进制格式。
从 2007 年开始,Microsoft Excel 使用基于Office Open XML
的新格式。但我不认为从 LaTeX 解析它会更容易。xlsx
XML
更新:格式是压缩的,所以又是二进制的。
我的建议是使用更简单的格式,例如逗号分隔值。cvs
是一种纯文本格式。Excel 可以轻松地将电子表格导出为csv
。
我们有datatool
处理文件的包csv
,可能有助于您填充表格。我不确定它如何与 一起工作TikZ
。
约瑟夫还建议我这pdfplotstable
可能有助于显示数据。
如果您确实想坚持使用xls
文件,那么 Werner 的建议是正确的选择。
希望能帮助到你。:-)
更新:这是一个简单明了的表格示例:
保存的时候我可以选择csv
格式:
这将为我提供以下纯文本(scores.csv
):
ID,Name,Score
1,Knuth,10
2,Lamport,10
3,Mittelbach,7
4,Oetiker,7
现在,在 LaTeX 中使用datatool
:
ex1.tex
\documentclass[a4paper]{article}
\usepackage{datatool}
\begin{document}
\DTLloaddb[keys={ID,Name,Score}]{scores}{scores.csv}
\begin{table}[htbp]
\caption{Our final score}
\centering
\DTLdisplaydb{scores}
\end{table}
\end{document}
ex2.tex
\documentclass[a4paper]{article}
\usepackage{datatool}
\DTLloaddb[keys={ID,Name,Score}]{scores}{scores.csv}
\begin{document}
\begin{table}[htbp]
\caption{Our final score}
\centering
\begin{tabular}{clr}
\textbf{ID} & \textbf{Name} & \textbf{Score}
\DTLforeach{scores}{%
\id=ID,\name=Name,\score=Score}{%
\\ \id & \name & \score}
\end{tabular}
\end{table}
\end{document}
输出:
(我不知道该怎么做TikZ
,抱歉。)
这个问题有一个后续问题:luaLaTeX 可以将 xlsx 表格转换为 LaTeX 代码吗?。使用 LuaLatex,可能可以解压文件并从生成的 XML 中提取数据。不过,在我看来,这并不容易。
答案2
和pgfplotstable
(这是其中的一部分pgfplots
)你可以做类似的事情
\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
columns/Name/.style={string type},
every head row/.style={
before row=\toprule,
after row=\midrule},
every last row/.style={
after row=\bottomrule}
]{scores.csv}
\end{document}
答案3
对于执行此操作的另一种方法,如果您确实需要以某种二进制格式导入数据,例如xls
,尤其是如果您想对数据进行某些计算,则可以使用R
和Sweave
.R
统计软件可以读取格式使用gdata
库,并Sweave
允许您将R
代码合并到latex
文件中。假设您有一个data.xls
如下所示的文件:
您将创建一个包含以下内容的文件report.Rnw
:
\documentclass{article}
\usepackage{Sweave}
\begin{document}
<<echo=false, results=hide>>=
library(xtable)
library(gdata)
data <- read.xls("data.xls")
@
Table~\ref{tab:mydata} shows my data.
<<echo=false, results=tex>>=
print(xtable(data, caption = "My data", label="tab:mydata"))
@
\end{document}
如您所见,这是一个常规的 LaTeX 文件,其中的R
代码片段由
<<options>>
和分隔@
在单独的行上。然后您可以Sweave
像这样运行它:
R CMD Sweave report.Rnw
这将生成一个report.tex
文件。在该文件上运行 LaTeX 将会排版以下内容:
答案4
我写了一篇带有视频教程的文章,介绍如何在 Latex 中使用 Excel 制作表格。希望你会觉得它有用:http://quicklatex.blogspot.com/2012/02/how-to-create-table-in-latex-from-ms.html
第一种方法 - 使用 datatool 包
\documentclass{article}
\usepackage{datatool}
\DTLloaddb[keys={c1,c2,c3}]{ctext}{csvtext.csv}
\begin{document}
\begin{table}
\begin{tabular}{clr}
\textbf{Software} & \textbf{Manufacturer} & \textbf{Malware}
\DTLforeach{ctext}{
\cola=c1,\colb=c2,\colc=c3}{\\
\cola & \colb & \colc}
\end{tabular}
\end{table}
\end{document}
第二种方法-使用 pgfplotstable 包
\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{booktabs}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
columns/Software/.style={string type},
columns/num1/.style={string type},
columns/num2/.style={string type},
every head row/.style={
before row=\toprule,
after row =\midrule
},
every last row/.style={after row=\bottomrule}
]{csvtext.csv}
\end{document}