data.table::fread 在Excel工作簿中读取所有工作表

12 浏览
0 Comments

data.table::fread 在Excel工作簿中读取所有工作表

我想使用R语言中的data.table包中的fread函数读取Excel工作簿中的所有工作表,我的Excel文档my.xlsx有两个工作表,分别命名为Sheet1Sheet2。以下代码只能读取活动工作表。请问如何在不知道工作表名称的情况下读取所有工作表?谢谢。\n

df3 <- data.table::fread("in2csv my.xlsx")
> names(df3)
[1] "A" "B"
> df3
   A  B
1: 1  2
2: 2  4
3: 3  6
4: 4  8
5: 5 10

0
0 Comments

在这段对话中,问题的出现是作者需要从一个XLSX文件中读取多个工作表。作者最初尝试使用openxlsx::read.xlsx来实现这个目标,但是这个方法需要通过循环遍历每个工作表,并将每个工作表的数据追加到一个数据框中。作者还注意到,如果工作表的列结构和数据类型不一致,可能需要对数据进行标准化处理。然而,作者对openxlsx的作者进行了一些调查,并发现这个包在处理大于300MB的工作簿时可能会出现内存问题。

为了解决这个问题,作者尝试了一个基于Python的命令行工具xlsx2csv,这个工具可以处理大型的XLSX文件。作者在Linux系统上安装了这个工具,并通过命令行运行xlsx2csv命令来将每个工作表转换为一个单独的CSV文件。还有一个例子,展示了如何在命令行中使用xlsx2csv工具。

然而,有一个读者在使用xlsx2csv时遇到了错误,错误信息显示了一个无效的语法。作者指出这可能是因为读者在Python解释器中运行了这个程序,而不是在命令行提示符下运行。

为了解决从一个XLSX文件中读取多个工作表的问题,作者最初尝试了openxlsx::read.xlsx方法,但是由于内存问题,作者转而尝试了基于Python的命令行工具xlsx2csv。读者在使用xlsx2csv时遇到了一些问题,但是作者提供了解决方法。

总体来说,这个问题的出现是因为作者需要从一个XLSX文件中读取多个工作表,而解决方法是使用xlsx2csv工具来将每个工作表转换为一个单独的CSV文件。

0