2017-05-03 85 views
0

我有几百个xls文件,其中有不正确的数据。在R中生成xls文件,并在列名顶部标题

我需要打开它们进行更正并保存它们。

进行更正是一件小事,所以我已经为此编写了代码,诀窍是每个工作表都有一个从第3行开始的表,前两行包含合法标题。

我习惯于使用readxl软件包,但它不提供保存电子表格的工具。所以今天我一直在试验xslx包,但我不太清楚如何使它工作。

readr我可以用下面的写有免责声明csv文件:

write_csv(Disclaimer, filepath,col_names = FALSE) 
write_csv(my.data.frame,filepath, col_names = TRUE,append =TRUE) 

xlsx这不起作用:

write.xlsx(filepath,Disclaimer,"Sheet1",col.names = FALSE) 
write.xlsx(filepath,my.data.frame,"Sheet1",col.names = TRUE,append=TRUE) 

这yeilds java错误:

java.lang.IllegalArgumentException: The workbook already contains a sheet of this name

所以我的问题是你怎么能写一个xls文件(或者xlsx而不是csv),以便它在相关表格上方具有标题。

为了记录我的工作簿有两张纸,两张纸都有免责声明,但是它们包含不同的表格。

我真的希望我可以离开excel文件,但我需要保持原始格式。

此外,我打算使用其他软件包,但我不熟悉其他软件包(我们说的时候正在研究XLConnect)。

+0

为什么不试试'readr :: write_excel_csv'? – yeedle

+0

嗨@yeedle感谢您的输入,即使当我将文件扩展名覆盖到'xls'(警告提示扩展名与文件格式不匹配)时,也会创建'csv'文件。这里是我测试这个'write_excel_csv(data.frame(a = c(1,1,1,1),b = c(“A”,“B”,“C”,“D”)),“。 /test.xls“)',这是你的想法? – sgp667

+0

是的。我的错。我认为这写'xls'文件 – yeedle

回答

1

我想通了!

xlsx还有其他一些低级功能,可以让您逐个构建每个工作表。

见我的测试代码波纹管:

wb <- createWorkbook(type = "xls") 
sh1 <- createSheet(wb,sheetName = "Sheet1") 
addDataFrame(data.frame("Disclaimer"=c("Disclaimer")),sheet = sh1,row.names = FALSE,startRow = 1,col.names = FALSE) 
addDataFrame(data.frame("Col1" = c(1,2,3),"Col2"=4:6),sheet = sh1,row.names = FALSE,startRow = 2) 

sh2 <- createSheet(wb,sheetName = "Sheet2") 
addDataFrame(data.frame("Disclaimer"=c("Disclaimer")),sheet = sh2,row.names = FALSE,startRow = 1,col.names = FALSE) 
addDataFrame(data.frame("Col1" = c(1,2,3),"Col2"=4:6),sheet = sh2,row.names = FALSE,startRow = 2) 

saveWorkbook(wb,"test_wb.xls")