2

我想将保存为启用宏的工作簿 (Jimmy.xlsm) 的 Excel 文件(比如说它的名称是“Jimmy”)转换为 Jimmy.xlsx。

我需要在编码环境中完成此操作。我不能简单地通过在 Excel 中打开文件并分配不同的文件类型来更改它。我目前正在用 R 编程。如果我使用该功能

file.rename("Jimmy.xlsm", "Jimmy.xlsx")

文件损坏。

4

2 回答 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

当然,宏将被删除。

这是一个答案,但我会质疑您要完成的工作。一般来说,从 Excel 控制 R 比从 R 控制 Excel 更容易。我使用来自http://rcom.univie.ac.at/的 REXCEL ,它不是开源的,但非常强大。

于 2015-04-13T22:07:26.647 回答
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)
于 2021-11-21T16:12:25.517 回答