VB.NET - Acessando um arquivo Texto
Como podemos acessar um arquivo texto usando ADO.NET em uma aplicação VB.NET ?
Muito simples , basta usar o provedor OLE DB .NET com a string de conexão correta para o caso.
A string de conexão é dada abaixo:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\caminho\;Extended Properties=""text;HDR=Yes;FMT=Delimited"""
"HDR=Yes;" - indica que a primeira linha contém os nomes das colunas e não dados.
Vamos criar uma aplicação do tipo
Windows Application usando VB.NET para acessar um
arquivo texto.
Suponha que temos o arquivo texto - classificacao.txt
- conforme abaixo:
"Classificacao","Time","Pontos"
1,"São Paulo",28
2,"Santos",24
3,"Mogi Mirim",22
4,"Santo André",20
5,"Corinthians",16
Este arquivos representa a classificação do campeonato Paulista/2005. Vamos
acessar este arquivo e exibir os dados em um DataGrid.
Para isto vamos criar um aplicação VB.NET e no formulário padrão vamos incluir um DataGrid e um Botão de comando:
No evento Click do botão vamos inserir o código que faz o acesso e preenche um DataTable para em seguida exibir os dados no datagrid:
Private Sub btAcessoTxt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAcessoTxt.Click Dim da As New OleDbDataAdapter("SELECT * FROM [Classificacao.txt]", ConfigurationSettings.AppSettings("acessoTXT")) ' cria e preenche um datatable Dim dt As New DataTable("Categorias") Try da.Fill(dt) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try ' vincula a tabela no modo de visualizacao padrao ao datagrid dg.DataSource = dt.DefaultView End Sub |
A string de conexão esta armazenada no arquivo de configuração web.config. (Leia o artigo : Tratando arquivos de configuração para saber mais)
Então para o exemplo deste artigo o arquivo de configuração tem o seguinte conteúdo:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="acessoTXT" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\classificacao.txt;Extended Properties=text;HDR=yes;FMT=Delimited" /> </appSettings> </configuration> |
O provedor OLE DB pode ler e inserir dados em um arquivo texto , para isto ele usa os drivers ISAM - Indexed Sequential Access Method - especificado no atributo : Extended Properties da string de conexão.
Não é possível definir todas as características de um arquivo texto através da string de conexão. Você pode acessar arquivos que usam delimitadores não padronizados criando um arquivo chamado schema.ini no mesmo diretório do arquivo texto. Abaixo um exemplo de um possível arquivo schema.ini para o arquivo classificacao.txt usado no exemplo:
[Classificacao.txt]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0
Character=OEM
Col1=Classificacao Long Width 4
Col2=Time Text Width 15
Col3=Pontos Long Width 4
As opções de formatação usadas são :
Formato | Descrição |
CSV Delimited | Os campos são delimitados por virgulas. Format=CSVDelimited . È o valor padrão |
Custom Delimited | Campos são delimitados com um caracter personalizado. Format=Delimited(customCharacter) |
Fixed Lenght | Os campos possuem tamanho fixo. Format=FixedLength |
Tab Delimited | OS campos são delimitados com tabs; Format=TabDelimited |
MaxScanRows : indica quantos linhas serão procuradas para automaticamente determinar o tipo da coluna. O valor 0 indica que todas as linhas serão procuradas.
ColN = ColumnName dataYpe [Width n]
ColN - indica o nome da coluna , largura e tipo de dados para cada coluna. Se o nome da coluna tiver espaços deverá vir entre colchetes.
Até breve..
José Carlos Macoratti