JanMarvin / openxlsx2

openxlsx2 - read, write and modify xlsx files
https://janmarvin.github.io/openxlsx2/
Other
121 stars 11 forks source link

wb_add_image does not work properly in the presence of other images. #837

Closed ivanalaman closed 1 year ago

ivanalaman commented 1 year ago

Dear,

I believe there must be some bug in the wb_add_image function. In my ".xlsm" file I have on sheet 1 ".png" figures that simulate buttons. When I add ".jpg" images to this sheet, for some (unknown) reason, the first three images are replaced by some ".png" images. Below is an image of my sheet for better understanding and part of my code.

img_add_image_bug

tabelapronta <- structure(list(Data = c(45224, 45224, 45224, 45224, 45224, 45224, 
45224, 45224, 45224, 45224), Estado = c("ms", "ms", "ms", "ms", 
"ms", "ms", "ms", "ms", "ms", "ms"), Município = c("campo-grande", 
"campo-grande", "campo-grande", "campo-grande", "campo-grande", 
"campo-grande", "campo-grande", "campo-grande", "campo-grande", 
"campo-grande"), Endereço = c("Avenida Rachid Neder", "Rua Quinze de Novembro", 
"Rua Brisas de Zaragoza", "Avenida Afonso Pena", "Avenida Nelly Martins", 
"Rua Assunção Borba", "Rua Goiás", "Rua Jeriba", NA, "Avenida Murilo Rolim Júnior"
), Descrição = c("Apartamento contendo sala para dois ambientes com ventilador de teto sacada 01 quarto com armrio embutido com ventilador de teto 01 quarto sem armrio com ventilador de teto 01 sute com armrio embutido circulao wc social com ae e espelho cozinha com ae e rea de servio integrada com ae 01 vaga de garagem Telas de proteo nas janelas e sacada Valor da taxa mnima do condomnio R 34681  tarifa fixa de gua R 1505  o valor do condomnio pode alterar de acordo com o consumo individual de gua e gs Apartamento alugado visitas sob disponibilidade do inquilino", 
"Apartamento residencial para VendaJardim dos Estados Campo Grande03 dormitrios sendo 1 sute 2 salas 4 banheiros 1 vaga21000 m til 24600 m totalFale conosco: ", 
"KW IMVEIS VENDETRANSFERNCIA NO VILLAS DE CASTILLAS IIApartamento lindo e bem aconcheganteConta com 2 quartos sala cozinha com planejados sala com painel e banheiro com armrio e box e sacadaGaragem coberta para 1 veiculoCondomnio com churrasqueira quadra de esportes playground e tima seguranaTem elevador no condomnioValor para transferncia: R12000000  PARCELAS Agende sua visita:  CRECI 11451J", 
"Excelente apartamento: Entrar e morar 2 quartos com dependncias completas podendo usar como um terceiro quarto Andar alto com linda vista Possibilidade de venda com porteira fechada", 
"Lindo apartamento com 3 suites sala estendida com armrios embutidos varanda gourmet e vista para a Via Park Nascente", 
"NOVA LIMA Apartamento trreo2 quartosSala amplaCozinha individualizada pia em granitolavanderia1 vaga de garagem cobertacondomnio com rea gourmetchurrasqueira e piarea privativa: 48mValor de venda: R13600000Valor sujeito a alterao sem aviso prvioEverson Pires CRECI 7049 CG Imveis 10771 J", 
"KW IMVEIS VENDE:Apartamento no Eudes Costa localizao privilegiada perto de escola mercados e farmcias Contendo: Sala Cozinha 02 quartos  01 wc social  01 vaga na garagem  Valor: R 14500000Contato:  CRECI 11451 J", 
"O apartamento est localizado no bairro Chcara Cachoeira tem 75 metros quadrados com 3 quartos sendo 1 suite e 2 banheiros armrios embutidos Possui rea verde de jardim salo de festasVai lhe possibilitar curtir os dias mais quentes na piscinaChurrasqueira para voc aproveitar nos momentos de descontraoEncontrase na privacidade de um condomnio fechado Taxa de condomnio inclui agua e gs Agende sua visita creci 4368 Ana Maria 67", 
"J imaginou morar em um condomnioque conta com mais de 10 itens na rea de lazerE em um com mais de 50Eu sei que se voc  de Campo Grande apossibilidade de j conhecer o Vitalit  enormeMas vale a pena lembrar algunsnmeros:No complexo aqutico: 1 Piscina para crianas comaltura mdia de 50 cm de gua 2 piscinas adulto com alturamdia de 1 metro e 20 cm de gua 1 Piscina aquecida toda fechadaem vidro 1 sauna com piscina prpriaAlm disso as piscinas conta combombeiro prprio garantindo segurana para as crianas brincarem e os paisaproveitaremItens destinados a eventos: So 6 churrasqueiras sendo 4para 15 pessoas e 2 para 30 So 8 sales de festas sendo quedois tem dois andares todos com ar condicionado 2 cozinhas destinadas a reuniesmenores chamadas de espao gourmet que podem ser alugadas em conjuno ouseparado dos sales de festa das torres A e BItens destinados a esporte: Quadra de poliesportiva commarcao para tnis esporte muito praticado pelos moradores e com aulas paratenistas iniciantes intermedirios e avanados Quadra sinttica direcionada exclusivamentepara futebol Meiaquadra de Basquete muitoutilizada pelas crianas Quadra de vlei de areia muitoutilizada por todos os moradores jogando futevlei vlei e fazendo corridas etreinamentos Academia completa com personalhomem e mulher j pagos Sala para artes marciais Sala de dana Sala de pilatesItens destinados a convivncia: Sala de Jogos com televisosof cadeiras mesa mesa de sinuca armrios e geladeira muito utilizadapelos moradores para ver jogos importantes juntos Sala de jogos com ping pong epebolim ao lado da Sala de jogos citada acima Sala de estudos bem fechada esilenciosa toda mobiliada Lan House completa muitoutilizada pelas crianas Pet Playground com sacolinhalixo e gua prpria para aqueles que tem animais na famlia no precisaremsair do condomnio para levalos para passear 2 Parquinhos para as crianascom brinquedoteca Um deles localizado entre a torre A e a torre B e outrolocalizado entre a torre E e torre F Cerca de 16 praas com bancos Spa com hidromassagem Trs saunas Espao salo de belezaLembrando que todos os moradorespodem contratar profissionais prprios para fazerem uso acompanhado dasinstalaes mas o condomnio j disponibiliza algumas aulas por exemplo:Aulas de Tnis Personal na academia Aula de Jiu Jitsu aula de futebolinfantil e etcVoc que busca um timo custobenefcio combinado a uma vida agradvel em comunidade com muito lazer ediverso sejaBem vindo ao Vitalit Gostou deste imvel Marque umavisita conoscoO imvel no est de acordo com o que vocespera mas voc gostou do condomnio Entre em contato agora mesmo conoscoexistem oportunidades para todos os gostos no Vitalit Temos outrosapartamentos de outros tamanhos  venda Porm vale a pena conferir este aqui", 
"O apartamento no bairro Jardim Petrpolis possui 52 metros quadrados com 2 quartos e 1 banheiroLIGUE E AGENDE SUA VISITA PROXIMO AEROPORTO E BASE AEREA Thiago Ribeiro Fernandes Creci: 3788"
), Links = c("https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-com-piscina-monte-castelo-campo-grande-ms-70m2-id-2519557992/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-mobiliado-jardim-dos-estados-campo-grande-ms-210m2-id-2514075379/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-com-churrasqueira-mata-do-segredo-campo-grande-ms-60m2-id-2591333698/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-com-ar-condicionado-centro-campo-grande-ms-120m2-id-2434759153/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-mobiliado-vila-margarida-campo-grande-ms-109m2-id-2506388498/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-com-churrasqueira-nova-lima-campo-grande-ms-48m2-id-2663643060/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-jardim-dos-estados-campo-grande-ms-60m2-id-2663878870/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-com-piscina-chacara-cachoeira-campo-grande-ms-75m2-id-2607793591/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-vila-margarida-campo-grande-ms-88m2-id-2663939194/", 
"https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-com-jardim-jardim-petropolis-campo-grande-ms-52m2-id-2663628498/"
), Coordenadas = c("-20.440178,-54.610673", "-20.461933,-54.59461", 
"-20.411966,-54.595724", "Avenida Afonso Pena - Centro, Campo Grande - MS", 
"-20.435444,-54.580942", "-20.394701,-54.573465", "-20.456606,-54.596687", 
"-20.470381,-54.581569", "Vila Margarida, Campo Grande - MS", 
"-20.455429,-54.669144"), valor = c(360000, 3e+06, 120000, 4e+05, 
1050000, 136000, 145000, 3e+05, 560000, 155000), area = c(52, 
218, 162, 60, 240, 67, 100, 59, 60, 73), quartos = c(2, 2, 4, 
2, 6, 2, 3, 1, 2, 2), vagas = c(1, 2, 2, 1, 2, 2, 1, 1, 1, 2), 
    banheiros = c(1, 5, 5, 1, 6, 2, 2, 1, 1, 2), vunit = c(4615.38, 
    7339.45, 4876.54, 3166.67, 6208.33, 3805.97, 3150, 1355.93, 
    5333.33, 3287.67)), row.names = c(NA, 10L), class = "data.frame")

wb <- wb_load("resultados.xlsm")
wb$add_data(x = tabelapronta, sheet = "dados_brutos", start_row = 7, row_names = FALSE,col_names = FALSE) 

for (i in 1:nrow(tabelapronta)) {      
        numfotos <- length(list.files())      
        for (j in 1:numfotos) {
          imagem <- paste0(j, ".jpg")
          wb$add_image(sheet = 1, dims = wb_dims(i+6,13+j), file = imagem, width = 7.28, height = 3.64, units = "cm")   
        }
  }
cols <- 14:(ncol(tabelapronta)+5)
rows <- 7:(nrow(tabelapronta)+6)

wb$set_col_widths(sheet=1, cols = cols, widths = 38)
wb$set_row_heights(sheet=1, rows = rows, heights = 105)

wb$add_cell_style(sheet = 1, dims = wb_dims(rows = 7:(nrow(tabelapronta)+6), cols = 1:ncol(tabelapronta)), horizontal = "center",  vertical = "center")

nomecomp <- "resultados2.xlsm"
wb_save(wb,nomecomp,overwrite=TRUE)
JanMarvin commented 1 year ago

Thanks for the report, @ivanalaman . I’ll have a look. I assume your unable to share the file? Reproducing something like this is always a bit tricky

ivanalaman commented 1 year ago

Hi JanMarvin! Thanks for answering! Below is the complete file compressed in ".rar". The only way I found to share these files was through Google Drive. If there's another way, let me know! https://drive.google.com/file/d/11KvtmfUJo2IFCHam_QlstsDWkg4J_SVr/view?usp=drive_link

JanMarvin commented 1 year ago

Hi @ivanalaman , I've added a fix to #838 (this also fixed the slow column widths code). Thanks for sharing the file, that was really helpful :+1: (but you have to work on the minimal example code, because I had to spend at least 30 minutes figuring out how to actually run the code above :sob:).

ivanalaman commented 1 year ago

Hi Marvin! Sorry about this! I'll be more careful next time! Thank you very much!

Em qui, 2 de nov de 2023 16:39, Jan Marvin Garbuszus < @.***> escreveu:

Hi @ivanalaman https://github.com/ivanalaman , I've added a fix to #838 https://github.com/JanMarvin/openxlsx2/pull/838 (this also fixed the slow column widths code). Thanks for sharing the file, that was really helpful 👍 (but you have to work on the minimal example code, because I had to spend at least 30 minutes figuring out how to actually run the code above 😭).

— Reply to this email directly, view it on GitHub https://github.com/JanMarvin/openxlsx2/issues/837#issuecomment-1791436618, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJJRY5YGSUG7O4IJKJXWX3YCPZGZAVCNFSM6AAAAAA62YK57KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJRGQZTMNRRHA . You are receiving this because you were mentioned.Message ID: @.***>

JanMarvin commented 1 year ago

No worries. Thanks for the report and for the file, otherwise it would have been very hard to figure it out so quick!

JanMarvin commented 1 year ago

You should be able to install the development branch as shown in the README and the strange images should be gone