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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| Sub ImportCSV
'J.P Juin 2015
Dim vDoc 'le document csv de travail
Dim Arg()
dim fileProps(2) as new com.sun.star.beans.PropertyValue
Cdoc = ThisComponent 'classeur courant
fileProps(0).Name = "FilterName"
fileProps(0).Value = "Text - txt - csv (StarCalc)"
FileProps(1).Name = "Hidden"
FileProps(1).value = False ' on cache ou pas le fichier (avec False on ne cache pas)
fileProps(2).Name = "FilterOptions"
ChoixColonnes = ""
'le csv de test comprend 10 colonnes
'on traite les colonnes 1 à 7 avec format standard (1)
For i = 1 to 7
ChoixColonnes = ChoixColonnes & i & "/1/"
Next i
' on ignore les colonnes 8 à 10 (9)
For i = 8 to 10
ChoixColonnes = ChoixColonnes & i & "/9/"
Next i
'ChoixColonnes = ChoixColonnes & "10,1"
' 44 virgule - 59 point virgule - délimiteur de champ
' 34 guillemet délimiteur de texte
' 77 Caractères iso-8859
' 1 à partir de la première ligne , 2 on saute la première ligne (entête)
fileProps(2).Value = "59,34,77,2," & choixColonnes
' on crée une boîte de dialogue pour choisir le fichier csv
oDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker")
oDlg.setMultiSelectionMode(false)
oDlg.execute
aUrl = oDlg.getFiles()
'Messagebox pour debug
's = "file:" & chr(10) & aUrl(0) & chr(10)
'msgbox s
vDoc = StarDesktop.loadComponentFromURL(aURL(0), "_blank", 0, fileProps())
oASheet=vDoc.sheets(0)'première feuille
'on cherche le nombre de lignes
Curs = oASheet.createCursor
Curs.gotoEndOfUsedArea(True)
NumRows = Curs.Rows.Count
oArange=oASheet.getCellRangeByName("A1:G" & NumRows )'source
'on copie les cellules
oAarray=oARange.getDataArray()
'on indique où l'on doit coller les cellules
'Attention la plage cible doit avoir ABSOLUMENT la même taille que la plage source
oCrange=Cdoc.sheets(0).getCellRangeByName("L1:R" & NumRows )'cible
'on colle les cellules dans la cible
oCrange.setDataArray(oAarray)
'on ferme le document csv
vdoc.close (-1)
End Sub |
Partager