Вы можете сделать это довольно просто.Идея состоит в том, чтобы сделать копию столбца 99 в столбце 100, а затем записать df в столбец 99. Поскольку вы не предоставляете данные, я приведу небольшой воспроизводимый пример.У моего existing_workbook.xlsx
просто есть два столбца.Я переместу столбец 2 в столбец 3, затем добавлю данные из file.csv
в столбец 2. В обновленной базе данных будет добавлен новый столбец перед столбцом 2.
Сначала некоторые данные
library(xlsx)
## Create some reproducible data for testing
write.csv(1:150, "file.csv", row.names=FALSE)
df = data.frame(X = seq(2,300,2), Y=rep(LETTERS, length.out=150))
wb <- xlsx::createWorkbook()
sheet1 <- xlsx::createSheet(wb, sheetName='test')
addDataFrame(df, sheet1, col.names=TRUE, row.names=FALSE)
saveWorkbook(wb, 'existing_workbook.xlsx')
Теперь у нас есть файлы file.csv
и existing_workbook.xlsx
, как в вашем коде.Мой код начинается как ваш, чтобы загрузить данные.
## Your input statements
df <- read.csv("file.csv", header = TRUE)
workbook <- loadWorkbook("existing_workbook.xlsx")
sheets <- getSheets(workbook)
# Import sheet names from above workbook
sheets <- getSheets(workbook)
Теперь я копирую столбец 2 в столбец 3, чтобы сохранить его.
## Move a copy of column 2 to column 3
columnToPreserve = readColumns(sheets$test, 2, 2, startRow=1)
addDataFrame(columnToPreserve, sheets$test,
startColumn = 3, row.names = FALSE)
Теперь мы можем записать df в столбец 2 без потери старого столбца 2.
## Now we can write df into column 2
addDataFrame(df, sheets$test, startColumn = 2, row.names = FALSE)
## Save elsewhere to make sure it was right
saveWorkbook(workbook, 'updated_workbook.xlsx')
Если вы откроете updated_workbook.xlsx
в Excel, выдолжен увидеть вставленный столбец.