Cómo crear un archivo de texto delimitado con los datos existentes en un DataSet |
Por Enrique Martínez Montejo |
Última revisión: 25/06/2006 |
Puede ser que nos interese crear un archivo de texto delimitado, con los datos existentes actualmente en un objeto DataSet, y asimismo, utilizar un carácter delimitador en concreto, como por ejemplo, que las columnas se encuentren separadas por comas, o por cualquier otro carácter.
El procedimiento seguro que muestro a continuación, crea un archivo de texto en la ruta especificada, con los datos existentes actualmente en un objeto DataTable incluido en el objeto DataSet que se pase al procedimiento. Asimismo, opcionalmente podemos elegir el carácter que delimitará a los campos (que por defecto será el punto y coma), así como si los campos alfanuméricos se deben de encerrar o no entre comillas dobles.
Private
Sub CreateTextDelimiterFile(ByVal
fileName As
String, _
ByVal ds As
DataSet, _
ByVal dataTableName
As String,
_
Optional
ByVal separatorChar As
Char = ";"c, _
Optional
ByVal textDelimiter As
Boolean =
True)
'*******************************************************************
' Nombre: CreateTextDelimiterFile
' por Enrique Martínez Montejo - 18/05/2006
'
' Versión: 1.0
'
' Finalidad: Crear un archivo de texto delimitado con el contenido
' de un objeto DataTable.
'
' Entradas:
' fileName: String. Ruta y nombre del archivo de texto.
'
' ds:
DataSet. Un objeto DataSet válido.
'
' dataTableName: String. El nombre de
un objeto DataTable
'
incluido en el objeto DataSet
'
' separatorChar: Char. El carácter
delimitador de los campos. Por
'
defecto se utilizará el punto y coma.
'
' textDelimiter: Boolean. Indica si
los campos alfanuméricos deben
'
aparecer entre comillas dobles.
'
'*******************************************************************
' Si no se ha especificado un
nombre de archivo,
' o el objeto DataSet no es válido, provocamos
' una excepción de argumentos no válidos.
'
If ((fileName.Length = 0)
Or (dataTableName.Length = 0)
Or (ds Is
Nothing))
Then
Throw
New System.ArgumentException("Argumentos
no válidos.")
End
If
' Si el archivo existe, solicitamos
la confirmación
' para sobreescribirlo.
'
If (IO.File.Exists(fileName)) Then
If
(MessageBox.Show("¿Desea sobreescribir el archivo "
& fileName & "?", _
"Crear archivo de texto", _
MessageBoxButtons.YesNo, _
MessageBoxIcon.Information) = Windows.Forms.DialogResult.No)
Then
' Abandonamos el procedimiento
Return
End
If
End
If
Dim sw
As System.IO.StreamWriter
Try
Dim
dc As DataColumn
Dim
dr As DataRow
Dim
col As
Integer
Dim
value As
String = ""
' Creamos
el archivo de texto
'
sw = New
System.IO.StreamWriter(fileName)
'
Recorremos todas las filas del objeto DataTable
' incluido en el conjunto de datos.
'
For
Each dr In
ds.Tables(dataTableName).Rows
For Each
dc In ds.Tables(dataTableName).Columns
If (dc.DataType
Is System.Type.GetType("System.String"))
And _
(textDelimiter = True)
Then
' Incluimos el dato alfanumérico entre el caracter
' delimitador de texto especificado.
'
value &= """" & dr.Item(col).ToString &
"""" & separatorChar
Else
' No se incluye caracter delimitador de
texto alguno
'
value &= dr.Item(col).ToString & separatorChar
End If
' Siguiente columna
col += 1
Next
' Al escribir los datos en el archivo, elimino el
' último
carácter delimitador de la fila.
'
sw.WriteLine(value.Remove(value.Length - 1, 1))
value =
""
col = 0
Next
' Siguiente fila
' Nos
aseguramos de cerrar el archivo
'
sw.Close()
Catch
ex As Exception
' Devolvemos la excepción al procedimiento
llamador
Throw
Finally
sw =
Nothing
End
Try
End Sub
Cómo crear un archivo de texto delimitado con los datos existentes en un DataSet
Si deseamos crear un archivo de texto separado por comas, con los datos de un objeto DataTable llamado Clientes, y que los campos alfanuméricos se encuentren encerrados entre comillas dobles (que es la opción por defecto), llamaríamos al procedimiento de la siguiente manera:
Try
CreateTextDelimiterFile( _
"C:\Mis
documentos\Archivo.txt", _
objetoDataSet, _
"Clientes", _
","c)
Catch ex As
Exception
MessageBox.Show(ex.Message)
End Try
Otros enlaces de interés:
Trabajar con los datos existentes en un archivo de texto
Cómo crear un archivo XML con los datos de un objeto DataSet
Enrique Martínez Montejo - 2006
NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.
NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.