- Windows Script Host - VBScript - Entrega y edición de datos - Crear un archivo CSV -

Como un archivo CSV es un archivo de texto, su creación se efectua sobre el objeto Stream de texto perteneciente al componente Scripting Runtime.
El script crea una instancia de "FileSystemObject" con la llamada de "CreateObject( )" registra dicha referencia en la variable FSO. El metodo "CreateTextFile( )" crea un nuevo archivo con el nombre "listadeusuarios.csv". Adicionalmente, se incluirá en la primera linea del archivo, el nombre del campo con la función "WriteLine( )". Finalmente, el archivo será cerrado con "Close( )".
Ejemplo:

' archivocsv.vbs
' ============
Option Explicit
' declaración de variable
Dim FSO,archivo
Const nombre="listadeusuarios.csv"
' creación de la referencia de objeto
Set FSO = CreateObject("Scripting.FileSystemObject")
' creación del archivo
Set archivo = FSO.CreateTextFile(nombre)
' escribir el nombre de la columna
archivo.WriteLine("nombredelusuario;nombre;apellido; _
fechanacimiento;nrseccion")
archivo.Close

La lectura del archivo en su forma actual carese de sentido, ya que no datos.

Incluir datos en un archivo CSV
Cada columna, en un archivo CSV, esta delimitado por un signo de separación, en este caso por un puto y como ( ; ). Para introducir una lista de usuarios en un archivo CSV, se declararan, como en el ejemplo que sigue, las variables necesarias y posteriormente con la función "Array( ) ", se dotará de valores.
Sobre "CreateObject( )" se crea una referencia con el metodo "FileSystemObject( )", el cual se encuentra en FSO. A continuación, se abrirá el archivo creado con el metodo "CreateTextFile( )" y se guardará la referencia al objeto en la variable "archivo". En este ejemplo, encontrará el modo de apertura "ForAppending", el cual permite incluir datos en un archivo existente. Con la ayuda de una bucle "For" se introduciran los valores del Array correspondiente en el archivo. El metodo "Close( )" cerrará el archivo al final del script.
Una particularidad del bucle es la función "UBound( )", la cual devuelve la cantidad de registros en un Array.

' escribirdatos.vbs
' ================================================
Option Explicit
' declaración de variables
Dim nombredelusuario, nombre, apellido, fechanacimiento, nrseccion
Dim FSO, archivo,i
Const ForWriting = 2
Const ForAppending = 8
' llenar el Arrays con valores
nombredelusuario=Array("VirctorHugo","ArmandoGarcia","EstefanKing", _
"LolaLopez")
nombre=Array("Victor","Armando","Estefan","Lola")
apellido=Array("Hugo","Garcia","King","Lopez")
fechanacimiento=Array("01.01.1959","03.05.1963","13.02.1925", _
"20.05.1920")
nrseccion=Array("01","02","03","03")
' creación de un objeto FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
' creación de archivo
Set archivo = fso.OpenTextFile("listadeusuarios.csv",ForAppending)
' escribir los valores en el archivo
For i=0 to UBound(nombredelusuario)
archivo.Write nombredelusuario(i) & ";"
archivo.Write nombre(i) & ";"
archivo.Write apellido(i) & ";"
archivo.Write fechanacimiento(i) & ";"
archivo.Writeline nrseccion(i)
Next
archivo.Close

Al abrir el archivo en el modo “ForAppending”, se escribirán los datos al final del mismo.

Lectura de un archivo CSV
Cuando existan datos en un archivo CSV, es posible leer los mismos con el metodo de un objeto Stream. Tras la creación de la referencia con el "FileSystemObject" y su reflejo en la variable FSO, el archivo CSV será abierto para su lectura con el metodo "OpenTextFile( )".
Para leer los datos línea a línea, se utilizará el metodo "ReadLine( )" del "FileSystemObject". Esto ocurre con un bucle While, el cual comprueba la propiedad "AtEndOfStream" como criterio de interrupción del bucle. Esta propiedad devuelve el valor "True", cuando se haya llegado al final del archivo.
Cada línea leida, se depositará en la variable "lineatexto" para su procesamiento. La distribución de los valores de una línea se realizará con la función "Split( )", la cual espera la cadena de caracteres a distribuir y el signo de separación, en este caso el punto y como ( ; ) como parámetros. La función devuelve un Array con los valores de la línea. Dicho Array se basa el el cero ( 0 ), por lo que el primer elemnto está representado por el index 0, el segundo por el index 1 y el ultimo valor por el index n-1. El Array estará representado por la variable usuario.
Por último, en cada ciclo del bucle, los valores determinados se editarán con el metodo del objeto WScript.
Llegado al final del archivo, será cerrado y liberado para su acceso. Esta tarea se cumplirá con el metodo "Close( )" del objeto "TextStream".

' leerdatos.vbs
' ================================================
Option Explicit
' definir constantes
Const ForReading = 1
Const nombrearchivo="listadeusuarios.csv"
' declaracion de variables
Dim FSO, archivo, usuario
Dim lineatexto
' crear objeto
Set FSO=CreateObject("Scripting.FileSystemObject")
' abrir archivo para leer
Set archivo = FSO.OpenTextFile(nombrearchivo, ForReading, False)
' recorrer el archivo hasta el final
While not archivo.AtEndOfStream
' leer una linea
lineatexto=archivo.Readline()
' separar las lineas con un punto y coma
' y guardar los valores en un Array
usuario=Split(lineatexto,";")
' edicion de datos de usuarios
WScript.Echo usuario(0) & ";" & usuario(1) & ";" & usuario(2) & ";" & _
usuario(3) & ";" & usuario(4)
Wend
' cerrar el archivo
archivo.Close

previo
Imprimir!
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
próximo