R语言导出DataFrame至Excel时第4、5区间无空列的问题排查
问题分析:导出DataFrame到Excel时第4、5区间无空列的问题
你遇到的问题核心是第4和第5区间的startCol设置没有留出空列的位置,咱们一步步拆解来理清楚:
先对应你的区间列数和Excel里的起始/结束列:
- Section1:7列,从第1列开始 → 结束在第7列,你给Section2设
startCol=9(空出第8列),这部分是对的 - Section2:5列,从第9列开始 → 结束在第13列(9+5-1),你给Section3设
startCol=15(空出第14列),没问题 - Section3:18列,从第15列开始 → 结束在第32列(15+18-1),你给Section4设
startCol=34(空出第33列),这也ok - Section4:5列,从第34列开始 → 结束在第38列(34+5-1),但你给Section5设的
startCol=39,这就直接和Section4的结束列接上了,完全没留空列的位置!
要在Section4和Section5之间空出一列,Section5的起始列应该是38+1+1=40,而不是39。
修正后的代码如下:
Section1 <- DataFrame[,1:7] Section2 <- DataFrame[,8:12] Section3 <- DataFrame[,13:30] Section4 <- DataFrame[,31:35] Section5 <- DataFrame[,36:48] writeData(wb, sheet = 1, Section1, rowNames = FALSE, colNames = TRUE, keepNA = FALSE) writeData(wb, sheet = 1, Section2, rowNames = FALSE, colNames = TRUE, keepNA = FALSE, startCol = 9) writeData(wb, sheet = 1, Section3, rowNames = FALSE, colNames = TRUE, keepNA = FALSE, startCol = 15) writeData(wb, sheet = 1, Section4, rowNames = FALSE, colNames = TRUE, keepNA = FALSE, startCol = 34) # 这里把startCol修改为40,留出空列位置 writeData(wb, sheet = 1, Section5, rowNames = FALSE, colNames = TRUE, keepNA = FALSE, startCol = 40) saveWorkbook(wb, "/View.xlsx", overwrite = TRUE)
另外给你个小建议:以后可以用动态计算的方式设置startCol,避免手动数错列数,比如先记录上一个区间的结束列,下一个区间的startCol = 上一个结束列 + 2(+1是空列,+1是下一个区间的起始),这样就不用反复手动计算啦~
内容的提问来源于stack exchange,提问作者Moho
相关产品推荐
相关产品推荐

