Передать формулу в файл xls с помощью пакета R's xlsx - PullRequest
5 голосов
/ 30 марта 2012

Вот код, который я использовал.

library(xlsx)
wb <- loadWorkbook('D:/test.xls') 
sheets <- getSheets(wb) 
sheet <- sheets[['my_sheet']]

addDataFrame(x = ds, sheet = sheet, row.names = FALSE, col.names = FALSE, startRow=3, startColumn=1) 

cell.1 <- createCell(rows[1], colIndex=34)[[1,1]]
setCellValue(cell.1, "=A32*B33")
saveWorkbook(wb, 'D:/test.xls')

Добавление кадра данных работало без проблем. Но при открытии файла xls я увидел text "= A32 * B33" в ячейке A34 (для работы формулы нужно нажать дополнительный ENTER, чтобы). Можете ли вы помочь мне правильно ввести формулу?

Ответы [ 3 ]

7 голосов
/ 30 марта 2012

В прошлом я использовал пакет xlsx и, несмотря на большие надежды, обнаружил, что ему крайне не хватает функциональности и простоты использования.Когда я искал руководство по пакету минуту назад, оказалось, что невозможно сделать то, что вы хотите.

Хорошая новость заключается в том, что существует альтернатива в форме пакета XLConnect.XLConnect использует тот же код Java (из проекта Apache POI), что и xlsx, поэтому у вас все еще сохраняется тот же высокий уровень взаимодействия между операционными системами.

XLConnect имеет функцию, которая делает то, что вынужно: setCellFormula().

Ссылки:


PS.Можете ли вы сказать, что мне нравится этот пакет?

1 голос
/ 25 мая 2019

Вам нужно использовать следующее

cell.1$setCellFormula("A32*B33")

вместо

setCellValue(cell.1, "=A32*B33")

0 голосов
/ 21 октября 2015

Другой альтернативный метод - вывести файл csv вместо xls, а затем открыть его с помощью excel.

...