【问题标题】:Export data into specific cells in Excel sheet将数据导出到 Excel 工作表中的特定单元格
【发布时间】:2015-03-25 16:13:44
【问题描述】:

我需要将 R 中的数据框导出到 Excel 工作表,可以通过以下方式完成:

require("xlsx")
write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, 
    row.names=TRUE, append=FALSE, showNA=TRUE)

然后,我导出的数据将从 Excel 工作表的单元格“A1”开始粘贴。我还可以设置append=TRUE,这样数据就会添加到工作表的末尾。

是否有可能将其放入特定单元格?我需要将数据框导出到从单元格C10 开始的范围内。这可能吗?

更新: 该工作表包含行1-9 和列A-B 中的数据。因此,不能只将空单元格添加到数据框中并将其粘贴到 Excel 工作表中,因为这些空单元格会擦除数据。

【问题讨论】:

    标签: r export-to-excel


    【解决方案1】:

    您可以使用包XLConnect 来实现。

    library(XLConnect)
    wb <- loadWorkbook("File_result.xlsx"), create = TRUE)
    createSheet(wb, name = "Sheet1")
    
    # here, you can set the startRow and startCol. Col A = 1, B = 2,...
    writeWorksheet(wb,x,"Sheet1",startRow = 10, startCol = 3, header = TRUE)
    
    # automatically adjust column width
    setColumnWidth(wb, sheet = "Sheet1", column = 3:4, width = -1)
    saveWorkbook(wb)
    

    【讨论】:

    • 应该提到(在 2020 年),如果安装了 XLSX 包(及其依赖项),则应卸载 XLSX 和 XLConnect(具有 XLSX 依赖项)并重新安装 XLConnect,由于某些依赖和包冲突。
    【解决方案2】:

    您可以用空数据填充空单元格:

    data <- matrix(1:100, ncol=5)
    col.offset <- 2
    row.offset <- 9
    emptycols <- matrix("", ncol=col.offset, nrow=nrow(data))
    data <- cbind(emptycols, data)
    emptyrows <- matrix("", nrow=row.offset, ncol=ncol(data))
    data <- rbind(emptyrows, data)
    write.table(data, "test.csv", row.names=FALSE, col.names=FALSE)
    

    或者,如果您想保留原始数据:

    data <- matrix(1:100, ncol=5)
    col.offset <- 2
    row.offset <- 9
    orig.data <- as.matrix(read.csv("test.csv", header=FALSE, stringsAsFactors=FALSE))
    orig.cols <- orig.data[1:nrow(data), 1:col.offset]
    data <- cbind(orig.cols, data)
    orig.rows <- orig.data[1:row.offset, 1:ncol(data)]
    data <- rbind(orig.rows, data)
    

    【讨论】:

    • 是的,这段代码会删除原始数据。在这种情况下,您必须先读取原始数据,而不是创建空的列和行,然后才能将它们绑定到生成的新数据。
    • 我已经想到了这个方法。这是一个解决方案,但不是一个很好的解决方案。有没有更简单的方法?
    • 你去吧,我认为你可以适应read.xlsx。请注意,如果原始数据至少有一个字符串,那么所有数据也会是,因为它被保存为matrix,而不是data.frame
    猜你喜欢
    • 2014-10-04
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多