### Instalando e Carregando as bibliotecas
lbs<-c('tidyverse','rvest','stringr','openxlsx','DT','kableExtra')
req <- substitute(require(x, character.only = TRUE))
sapply(lbs, function(x) eval(req) || {install.packages(x); eval(req)})
## tidyverse rvest stringr openxlsx DT kableExtra
## TRUE TRUE TRUE TRUE TRUE TRUE
### Nomes devem ser conforme cadastrados no SMO.
Nomes<-c("SO ELTON JOSE DE OLIVEIRA","1S WALTER ROBYSON DE JESUS SOBRINHO",
"1S TAVES GUIMARÃES DA SILVA","2S SABRINA BASTOS COSTA",
"2S ADOLFO MANOEL DIAS DA SILVA","2S RICHARD DA SILVA FRANCISCO DE SOUZA",
"JULIANA ARAUJO DE ALMEIDA","3S DANILO DE SOUZA BEZERRA","3S BET GABRIEL VIEIRA TUASCO",
"3S BCO ANNA CAROLINA DOS SANTOS CORDEIRO","3S R1 JOSÉ RAIMUNDO DE SOUSA E SILVA NETO")
### Codigo dos Militares
COD<-c("C","R","V","S","A","I","L","D","T","N","O")
### SARAM
SARAM<-c("248431-5","304570-6","332593-8","396260-1","423681-5","615692-4",
"657695-8","665874-1","680540-0","696564-4","006521-8")
### NOME DE GUERRA
MILITAR<-c("SO BET Elton","1S BET Robynson","1S BET Taves","1S BET Sabrina",
"2S BET Adolfo","2S BCO Richard","3S BET Juliana","3S TET Bezerra",
"3S BET Tuasco","3S BCO Anna Carolina","TTC BCO Sousa e Silva")
(df.info<-matrix( c(COD,SARAM,MILITAR),nrow=length(COD)) )
## [,1] [,2] [,3]
## [1,] "C" "248431-5" "SO BET Elton"
## [2,] "R" "304570-6" "1S BET Robynson"
## [3,] "V" "332593-8" "1S BET Taves"
## [4,] "S" "396260-1" "1S BET Sabrina"
## [5,] "A" "423681-5" "2S BET Adolfo"
## [6,] "I" "615692-4" "2S BCO Richard"
## [7,] "L" "657695-8" "3S BET Juliana"
## [8,] "D" "665874-1" "3S TET Bezerra"
## [9,] "T" "680540-0" "3S BET Tuasco"
## [10,] "N" "696564-4" "3S BCO Anna Carolina"
## [11,] "O" "006521-8" "TTC BCO Sousa e Silva"
html<-read_html(file.choose())
dados<-html_table(html, fill = TRUE)[[3]]$X4[-c(1,2)]
qtd_mes<-length(dados)/2 ; m<-seq_len(qtd_mes)
turno1<-dados[2*m-1] ; turno2<-dados[2*m]
svc<-data.frame(turno1,turno2)
for ( j in 1:length(Nomes)) {
for ( i in 1:dim(svc)[2]) {
svc[,i]<-str_replace(svc[,i],Nomes[j],COD[j])
}
}
## Evita linhas em branco na planilha e já ordena por hier.
presentes<-unique(unlist(svc)) ; pos<-which(COD %in% presentes)
svc12h<-svc[!(svc[1]==svc[2]),] ; COD12h<-unique(unlist(svc12h))
## Somente os que tiraram serviço no mês, mantendo a hierarquia.
datatable(svc,extensions = 'Buttons',
options = list(dom='Blfrtip',
buttons=c('copy','csv','excel','pdf','print'),
lengthMenu=list(c(10,15,20,-1),c(10,15,20,"Todas"))))
## Somente os que tiram serviço no mês, mantendo a hier.
saram<-SARAM[pos]; cod<-COD[pos]; n<-length(cod); Info<-list()
etapas<-matrix(0,nrow=n, ncol=(qtd_mes+1))
qtd<-NULL ; info.atual<-df.info[pos,-1]
for (i in seq_len(n)){
dias<-which(svc==cod[i],arr.ind = TRUE)[,1]
dias_12h<-sort(dias[!dias %in% dias[duplicated(dias)]])
qtd[i]<-length(dias_12h)
etapas[i,dias_12h]<-"TC"
Info[[i]]<-list(Militar=cod[i], SARAM=saram[i], svc=dias_12h)
}
etapas[etapas==0]<-"" ; etapas[,qtd_mes+1]<-qtd
planilha_etapas<-as.data.frame(cbind(info.atual,etapas))
colnames(planilha_etapas)<-c("MILITAR","SARAM",as.character(m),"TOTAL")
datatable(planilha_etapas,extensions = 'Buttons',
options = list(dom='Blfrtip',
buttons=c('copy','csv','excel','pdf','print')))
str(Info)
## List of 9
## $ :List of 3
## ..$ Militar: chr "C"
## ..$ SARAM : chr "248431-5"
## ..$ svc : int [1:10] 1 4 6 11 15 17 19 22 25 26
## $ :List of 3
## ..$ Militar: chr "R"
## ..$ SARAM : chr "304570-6"
## ..$ svc : int [1:4] 18 20 21 23
## $ :List of 3
## ..$ Militar: chr "V"
## ..$ SARAM : chr "332593-8"
## ..$ svc : int [1:5] 3 7 11 13 16
## $ :List of 3
## ..$ Militar: chr "S"
## ..$ SARAM : chr "396260-1"
## ..$ svc : int [1:10] 2 5 8 10 12 15 19 21 24 27
## $ :List of 3
## ..$ Militar: chr "A"
## ..$ SARAM : chr "423681-5"
## ..$ svc : int [1:10] 3 6 9 12 16 17 18 23 24 28
## $ :List of 3
## ..$ Militar: chr "I"
## ..$ SARAM : chr "615692-4"
## ..$ svc : int [1:5] 1 4 5 8 14
## $ :List of 3
## ..$ Militar: chr "L"
## ..$ SARAM : chr "657695-8"
## ..$ svc : int [1:5] 2 7 9 10 13
## $ :List of 3
## ..$ Militar: chr "D"
## ..$ SARAM : chr "665874-1"
## ..$ svc : int [1:4] 14 25 27 28
## $ :List of 3
## ..$ Militar: chr "N"
## ..$ SARAM : chr "696564-4"
## ..$ svc : int [1:3] 20 22 26
wb<-createWorkbook()
addWorksheet(wb,"sheet 1")
addWorksheet(wb,"sheet 2")
writeData(wb,1,planilha_etapas,withFilter = TRUE)
writeData(wb,2,svc,withFilter = TRUE)
saveWorkbook(wb,file="Etapas_Fev21.xlsx")
Em fase de teste!
Em fase de teste!
## Carregando uma planilha do excel (escala cumprida: arquivo .xlsx)
## e atualizando-a com os dados do data.frame DF obtidos a partir do arquivo SMO.html
#DF<-as.data.frame(df[,-1])
#wb <- loadWorkbook("arquivo.xlsx")
#nome<-getSheetNames("arquivo.xlsx")
#writeData(wb, sheet = nome, DF,colNames = T,startRow = 9,startCol = 3)
#saveWorkbook(wb,"nome_desejado.xlsx",overwrite = T)
# Salvar somente na primeira compilacao.
# Antes da segunda compilacao (knit), comentar com #