Public Sub menuBIBingresar_Click()
Dialog.Title = "Seleccionar archivo CSV con bibliografía"
Dialog.Filter = ["*.csv", "Archivos de texto CSV"]
Dialog.AutoExt = True
Dialog.Path = User.Home & "/"
Dialog.ShowHidden = False
If Dialog.OpenFile() Then
Dim rutaArchivo As String = Dialog.Filename ' Obtener la ruta del archivo seleccionado
Dim reemplazos As String[][] ' Función que incorpora las referencias
' Defino los reemplazos
reemplazos = [["BibliographyType", "NuevoNombre1"], ["ISBN", "NuevoNombre2"]]
' Llama a la función y obtengo la línea modificada
Dim lineaModificada As String = ModificarNombresDeColumnas(rutaArchivo, reemplazos)
' Guardar la línea modificada
Dim nuevoArchivo As String = rutaArchivo
GuardarEnArchivo(nuevoArchivo, lineaModificada)
End If
End
' Función para realizar la secuencia de reemplazos
Public Function ModificarNombresDeColumnas(archivo As String, reemplazos As String[][]) As String
Dim miArchivo As File
miArchivo = Open archivo For Read Write
Dim linea As String = miArchivo.ReadLine
miArchivo.Close
' Realiza los reemplazos de nombres
Dim r As String[]
For Each r In reemplazos
linea = Replace(linea, r[0], r[1])
Next
Return linea
End
' Función para guardar en un archivo
Public Sub GuardarEnArchivo(archivo As String, contenido As String)
Dim miArchivo As File
miArchivo = Open archivo For Output
' Escribe el contenido en el archivo
Print miArchivo, contenido
' Cierra el archivo
miArchivo.Close
End
Public Sub Form_Open()
Dim sFile As String = User.Home &/ "miCSV.csv"
Dim rutaArchivo As String[] = Split(File.Load(sFile), gb.NewLine, "", True)
Dim iLoop As Integer
For iLoop = 0 To rutaArchivo.Max
rutaArchivo[iLoop] = Replace(rutaArchivo[iLoop], "BibliographyType", "NuevoNombre1")
rutaArchivo[iLoop] = Replace(rutaArchivo[iLoop], "ISBN", "NuevoNombre2")
Next
Kill sFile
File.Save(sFile, rutaArchivo.Join(gb.NewLine))
End
Public Sub btnImportar_Click()
Dim sFile As String = File.Dir(txtORIGEN.Text) &/ File.Name(txtORIGEN.Text)
Dim rutaArchivo As String[] = Split(File.Load(sFile), gb.NewLine, "", True)
Dim iLoop As Integer
'acá van todas las conversiones para JabRef y Zotero
For iLoop = 0 To rutaArchivo.Max
rutaArchivo[iLoop] = Replace(rutaArchivo[iLoop], "Identifier", "citationKey")
rutaArchivo[iLoop] = Replace(rutaArchivo[iLoop], "Year", "yearY")
Next
Kill sFile
File.Save(sFile, rutaArchivo.Join(gb.NewLine))
'acá viene el INSERT a SQLite
Me.Close
End
[code]
Public Function Import(f As String, sTab As String, Optional t As String = "\t") As String
Dim oRep As Collection = ["Year": "yearY", "Identifier": "citationKey"]
Dim aLines As String[]
Dim n As Integer
Dim aHead As String[]
Dim aData As String[]
Dim aHead2 As String[]
Dim h As String
Dim sql As String = ""
If Exist(f) Then ' Comprobación de existencia
If Lower(File.Ext()) = "csv" Then ' si existe ¿Es del tipo CSV?
aLines = Split(File.Load(f), gb.NewLine)
If aLines.Count > 1 Then 'tiene mas de una fila
aHead = Split(aLines[0], t)
For Each h In aHead
aHead2.Add(IIf(oRep.Exist(h), oRep[h], h))
Next
For n = 1 To aLines.Max
aData = Split(aLines[n], t)
sql &= "INSERT INTO " & sTab & " (" & aHead2.Join(", ") & ") VALUES (" & aData.Join(", ") & ");\n"
Next
Endif
Endif
Endif
Return sql
End