在R中将.xlsm转换为.xlsx

3
我希望能将一个名为“Jimmy”的Excel文件(保存为宏启用的工作簿,即Jimmy.xlsm)转换为Jimmy.xlsx。
我需要在编程环境中完成此操作。我不能简单地通过在Excel中打开文件并分配不同的文件类型来更改此文件。我目前正在使用R进行编程。如果我使用以下函数:
file.rename("Jimmy.xlsm", "Jimmy.xlsx")

文件变得损坏。

3
“百万种连接R和Excel的方法”(http://www.thertrader.com/2014/02/11/a-million-ways-to-connect-r-and-excel/)值得一读,以及“xlsx包是否适用于R中的xlsm文件?”(https://dev59.com/SGXWa4cB1Zd3GeqPM3Bk#11215451) - tospig
2个回答

3

在您的框架中,您需要读取表格并将其写回。假设您有一个名为“testXLSM2X.xlsm”的XLSM文件(带宏),其中包含一个具有数据表列的工作表。以下代码可以解决问题:

library(xlsx)
r <- read.xlsx("testXLSMtoX.xlsm", 1) # read the first sheet
# provides a data frame
# use the first column in the spreadsheet to create row names then delete that column from the data frame
# otherwise you will get an extra column of row index numbers in the first column
r2w<-data.frame(r[-1],row.names=r[,1])
w <- write.xlsx(r2w,"testXLSMtoX.xlsx") # write the sheet

当然,宏将被剥离。

这是一个答案,但我会质疑你试图达到的目标。一般来说,控制 R 从 Excel 比从 R 控制 Excel 更容易。我使用来自 http://rcom.univie.ac.at/ 的 REXCEL,它不是开源的但非常稳定。


0
这是一个使用R包RDCOMClient将XLSM文件转换为XLSX文件的函数:
convert_XLSM_File_To_XLSX <- function(path_XLSM_File, path_XLSX_File)
{
  xlApp <- COMCreate("Excel.Application")
  xlApp[['Visible']] <- FALSE
  xlApp[["DisplayAlerts"]] <- FALSE
  xlWbk <- xlApp$Workbooks()$Open(path_XLSM_File)
  xlWbk$SaveAs(path_XLSX_File, 51)
  xlWbk$Close()
  xlApp$Quit()
}

library(RDCOMClient)
convert_XLSM_File_To_XLSX(path_XLSM_File, path_XLSX_File)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接