PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Exemplo lê um arquivo CSV, converte seu conteúdo para JSON, e salva esse conteúdo como um arquivo .txt, permitindo escolher entre ANSI, Unicode ou UTF-8
Exemplo lê um arquivo CSV, converte seu conteúdo para JSON, e salva esse conteúdo como um arquivo .txt, permitindo escolher entre ANSI, Unicode ou UTF-8
Iniciado por Boller, jul., 30 2025 3:29 AM - Sem resposta
Membro registado
4.618 mensagems
Publicado em julho, 30 2025 - 3:29 AM
Aqui está um exemplo completo em WLanguage (WL) que lê um arquivo CSV, converte seu conteúdo para JSON, e salva esse conteúdo como um arquivo .txt, permitindo escolher entre ANSI, Unicode ou UTF-8:



✅ Procedure CSVtoJSONFile

// 📁 CSVtoJSONFile - Converte CSV para JSON e salva em arquivo de texto
// ⚙️ Parâmetros:
// sCSVPath: string -> Caminho do arquivo CSV de entrada
// sJSONPath: string -> Caminho do arquivo JSON de saída (pode ter extensão .txt)
// sSeparator: string -> Separador de colunas (ex: "," ou ";")
// nEncoding: int -> Codificação do arquivo de saída:
// 1 = ANSI, 2 = Unicode, 3 = UTF-8
//
// 🧠 Observação: Assume que a primeira linha contém o cabeçalho (nomes dos campos)

PROCEDURE CSVtoJSONFile(sCSVPath is string, sJSONPath is string, sSeparator is string = ",", nEncoding is int = 1)

IF NOT fFileExist(sCSVPath) THEN
Error("Arquivo CSV não encontrado: " + sCSVPath)
RETURN
END

csvID is int = fOpen(sCSVPath, foRead)
IF csvID = -1 THEN
Error("Erro ao abrir o arquivo CSV.")
RETURN
END

// Lê o cabeçalho
sHeaderLine is string = fReadLine(csvID)
arrHeaders is array of string = StringSplit(sHeaderLine, sSeparator)

jsonText is string = "["
bFirstLine is boolean = True

LOOP
sLine is string = fReadLine(csvID)
IF sLine = EOT THEN BREAK

arrValues is array of string = StringSplit(sLine, sSeparator)

IF NOT bFirstLine THEN
jsonText += ","
END
bFirstLine = False

jsonText += CR + TAB + "{"
FOR i = 1 TO ArrayCount(arrHeaders)
sKey is string = NoSpace(arrHeaders[i])
sValue is string = i <= ArrayCount(arrValues) THEN arrValues[i] ELSE ""
jsonText += ["%1\"%2\":\"%3\""].FormatIf(i > 1, ",", sKey, sValue)
END
jsonText += "}"
END

jsonText += CR + "]"
fClose(csvID)

// Salva JSON no formato escolhido
SWITCH nEncoding
CASE 1
fSaveText(sJSONPath, jsonText, foAnsi)
CASE 2
fSaveText(sJSONPath, jsonText, foUnicode)
CASE 3
fSaveText(sJSONPath, jsonText, foUTF8)
OTHER CASE
Error("Codificação inválida. Use: 1 = ANSI, 2 = Unicode, 3 = UTF-8")
RETURN
END

Info("Arquivo JSON gerado com sucesso: " + sJSONPath)




✅ Exemplo de uso:

CSVtoJSONFile("C:\dados\produtos.csv", "C:\dados\produtos.json", ";", 3) // UTF-8




📂 Saída esperada (JSON formatado):

[
{"ID":"1","NOME":"Produto A","PRECO":"10.00"},
{"ID":"2","NOME":"Produto B","PRECO":"15.00"},
{"ID":"3","NOME":"Produto C","PRECO":"22.50"}
]




⚠️ Dicas:
• Sempre valide se o CSV tem cabeçalho e as colunas estão no mesmo número em cada linha.
• Se quiser salvar com indentação e JSON real (Buffer ou Variant), posso criar uma versão com VariantToJSON.

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