2017-05-03 91 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")