#r #openxlsx
#r #openxlsx
Вопрос:
Я использую книгу Excel на 32 листах. Однако, когда я пытаюсь поместить лист тридцать два в начале листа 1 в книге, используя порядок листов, это приводит к ошибке. Пожалуйста, найдите ошибку, прикрепленную ниже.
worksheetOrder(wb)lt;-c(32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)
Комментарии:
1. Пожалуйста, предоставьте больше контекста и формулировок для этого вопроса. В документации
openxlsx::worksheetOrder
говорится: «Эта функция не изменяет порядок листов в объекте рабочей книги, она просто меняет порядок при записи в файл». Поэтому было бы полезно увидеть код, который создает книгу, а также код, который сохраняет книгу с 32 листами.
Ответ №1:
Вот решение с использованием readxl
пакета, но сначала давайте создадим тестовый набор данных с 4 листами.
data lt;- list(head(iris), head(mtcars), head(cars), head(airquality)) writexl::write_xlsx(data, 'test.xlsx')
Теперь в вашем рабочем каталоге должен быть файл excel с 4 листами. на 1-м листе есть iris
набор данных, на 2 mtcars
-м cars
-набор данных , на 3-м-набор данных и на 4 airquality
-м.
Решение —
library(readxl) #Order in which you want the sheets to be in req_order lt;- c(4, 2, 3, 1) #Read the sheet names sheets lt;- excel_sheets('test.xlsx') #Read the data in a list read_data lt;- lapply(sheets, function(x) read_xlsx('test.xlsx', x)) #Rearrange the data as per `req_order` read_data lt;- read_data[req_order] #Write the data to a new file with the new order. writexl::write_xlsx(read_data, 'new_test.xlsx')
Теперь вы можете найти новую книгу Excel с 4 листами, порядок которых изменился на airquality
, mtcars
, cars
и iris
, как указано в req_order
.
Комментарии:
1. Я не хочу создавать новый рабочий лист, я хочу изменить порядок одного и того же рабочего листа.