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