|
| 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/ |
| |
| |
| | | |
|
| | | | |
| | |
|