PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Exemplo de procedure para ler csv
Exemplo de procedure para ler csv
Iniciado por Boller, jul., 30 2025 3:28 AM - Sem resposta
Membro registado
4.618 mensagems
Publicado em julho, 30 2025 - 3:28 AM
Boa noite

Segue abaixo uma procedure em WLanguage (WL) para ler um arquivo CSV e retornar uma array of string com os dados de cada linha, já separado por colunas:



✅ Procedure ReadCSVFile

// 📁 ReadCSVFile - Lê um arquivo CSV e retorna uma array de arrays de strings
// ⚙️ Parâmetros:
// sFilePath: string -> Caminho completo do arquivo CSV
// sSeparator: string -> Separador utilizado (ex: "," ou ";")
// 🔁 Retorno:
// array of array of string -> Cada item representa uma linha com colunas separadas

PROCEDURE ReadCSVFile(sFilePath is string, sSeparator is string = ",")

arrResult is array of array of string
sLine is string
arrColumns is array of string

IF NOT fFileExist(sFilePath) THEN
Error("Arquivo CSV não encontrado: " + sFilePath)
RESULT arrResult
END

// Abre o arquivo para leitura
csvFileID is int = fOpen(sFilePath, foRead)

IF csvFileID = -1 THEN
Error("Erro ao abrir o arquivo CSV.")
RESULT arrResult
END

LOOP
sLine = fReadLine(csvFileID)
IF sLine = EOT THEN BREAK

// Divide a linha em colunas
arrColumns = StringSplit(sLine, sSeparator)
ArrayAdd(arrResult, arrColumns)

END

fClose(csvFileID)

RESULT arrResult




✅ Exemplo de uso:

arrCSV is array of array of string

arrCSV = ReadCSVFile("C:\dados\clientes.csv", ";")

FOR EACH ROW arrCSV
Trace("Nome: " + arrCSV[ROW][1] + " | Email: " + arrCSV[ROW][2])
END




📌 Observações:
• Se o CSV tiver cabeçalho, você pode ignorar a primeira linha com um bFirstLine is boolean = True dentro do LOOP.
• Para lidar com aspas duplas, quebra de linha em colunas, UTF-8, e outros casos especiais, posso criar uma versão avançada com parsing completo. Deseja isso também?

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/