Esportazione CSV solo righe selezionate

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Aluc
Messaggi: 24
Iscritto il: lunedì 12 luglio 2021, 12:12

Esportazione CSV solo righe selezionate

Messaggio da Aluc »

Ciao a tutti,
qualcuno mi sa dire se di un documento .ods è possibile salvare in CSV solo alcune righe selezionate e non l'intero documento?
Attualmente salvo un unico csv poi lo apro da blocco note e lo salvo in diversi csv ma vorrei automatizzare l'operazione.
Grazie a chi mi potrà aiutare
Aluc
Open Office4 .1.6
Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione CSV solo righe selezionate

Messaggio da patel »

Si può fare con una macro, ad esempio questa

Codice: Seleziona tutto

Sub CsvSave 
Doc = ThisComponent
oSheet=thiscomponent.getcurrentcontroller.activesheet
oRange = Doc.getCurrentSelection()
startcol= oRange.RangeAddress.StartColumn
endcol= oRange.RangeAddress.EndColumn
startrow= oRange.RangeAddress.StartRow
endrow= oRange.RangeAddress.EndRow
nomefile="C:\Download\PROVA.csv" ' percorso del file da salvare
n = FreeFile() 
Open nomefile For output As #n  
for row=startrow to endrow
  oText = ""
  for col=startcol to endcol
     CellText = oSheet.getCellByPosition(col, row).String
     if col = endcol then
        oText =oText & CellText
     else
        oText =oText & CellText & ";" ' separatore può essere anche virgola
     end if
  next
  print #n, oText
next
Close #n

End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
cwolan
Messaggi: 12
Iscritto il: mercoledì 3 agosto 2022, 6:49

Re: Esportazione CSV solo righe selezionate

Messaggio da cwolan »

Una piccola nota ovvia:
la macro non funzionerà per la selezione non contigua.
OpenOffice 4.1.14, LibreOffice 7.2.7.2 & 7.4.6.2
Windows 7,10,11
Aluc
Messaggi: 24
Iscritto il: lunedì 12 luglio 2021, 12:12

Re: Esportazione CSV solo righe selezionate

Messaggio da Aluc »

La macro funziona perfettamente se si fa un'unico salvataggio in csv, se si ripete l'esecuzione della macro questa sovrascrive il file precedente salvando sempre come prova.csv
Servirebbe dunque che potessero essere salvati files con nomi progressivi es: prova1.csv, prova2.csv, prova3.csv ecc. senza che siano sovrascritti , questo perchè dello stesso documento devo fare diverse selezioni e salvare diversi csv.
E' possibile?
Grazie per il tuo aiuto
Open Office4 .1.6
Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione CSV solo righe selezionate

Messaggio da patel »

Puoi dedicare una cella al numero progressivo ? se sì

Codice: Seleziona tutto

Sub CsvSave2
Doc = ThisComponent
oSheet=thiscomponent.getcurrentcontroller.activesheet
oRange = Doc.getCurrentSelection()
startcol= oRange.RangeAddress.StartColumn
endcol= oRange.RangeAddress.EndColumn
startrow= oRange.RangeAddress.StartRow
endrow= oRange.RangeAddress.EndRow
filenum= oSheet.getCellRangeByName("K1").value 'K1 cella di servizio
fpath="C:\Download\"
nomefile=fpath & "PROVA" & filenum & ".csv"
n = FreeFile() 
Open nomefile For output As #n  
for row=startrow to endrow
  oText = ""
  for col=startcol to endcol
     CellText = oSheet.getCellByPosition(col, row).String
     if col = endcol then
        oText =oText & CellText
     else
        oText =oText & CellText & ";"
     end if
  next
  print #n, oText
next
oSheet.getCellRangeByName("K1").value = filenum + 1
Close #n
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione CSV solo righe selezionate

Messaggio da patel »

cwolan ha scritto: sabato 20 agosto 2022, 8:26 Una piccola nota ovvia:
la macro non funzionerà per la selezione non contigua.
Si può fare anche in caso di selezione non contigua, ma se non serve è inutile complicare il codice.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Aluc
Messaggi: 24
Iscritto il: lunedì 12 luglio 2021, 12:12

Re: Esportazione CSV solo righe selezionate

Messaggio da Aluc »

La macro funziona perfettamente, non mi serve la seleziona non contigua ma mi sarebbe utile però che nel salvataggio dei vari CSV fosse presente sempre la riga 1 perchè ci sono le intestazioni dei nomi delle colonne, se è complesso aggiungerlo alla macro lo incollo a mano.
Grazie per il tuo aiuto
Open Office4 .1.6
Windows 10
Rispondi