PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 25 → Como gerar uma planilha Excel diretamente no disco a partir do resultado de uma query, sem passar por grid.
Como gerar uma planilha Excel diretamente no disco a partir do resultado de uma query, sem passar por grid.
Started by Boller, May, 20 2025 2:29 AM - No answer
Registered member
4,520 messages
Posted on May, 20 2025 - 2:29 AM
Então no WinDev você pode gerar uma planilha Excel diretamente no disco a partir do resultado de uma query, sem passar por grid. Isso pode ser feito com o uso de HExecuteQuery para executar a query, e depois xlCreateDocument, xlAddWorksheet e xlWrite (ou variantes) para gerar e salvar a planilha Excel.

Segue abaixo uma procedure completa que faz isso conforme suas diretivas:



Procedure: ExportaQueryParaExcel

// PROCEDURE ExportaQueryParaExcel()
// Gera uma planilha Excel diretamente no disco com os dados de uma query, sem exibir na tela

PROCEDURE ExportaQueryParaExcel()

//===============================
// DECLARAÇÕES
//===============================
sArquivoExcel is string = fCurrentDir() + "\Export_" + DateSys() + "_" + TimeSys() + ".xlsx"
xExcelDoc is xlsDocument
xPlanilha is xlsWorksheet
iLinha is int = 1
iColuna is int
sCampo is string
iContador is int

//===============================
// EXECUTA QUERY PERSONALIZADA
//===============================
IF NOT HExecuteQuery(QRY_Contrato, hQueryDefault) THEN
Error("Erro ao executar a query.")
RETURN
END

//===============================
// CRIA DOCUMENTO EXCEL
//===============================
xExcelDoc = xlsDocument()
xPlanilha = xlsWorksheet("Planilha1")
xExcelDoc..WorksheetList.Add(xPlanilha)

//===============================
// CABEÇALHO
//===============================
iColuna = 1
FOR EACH sCampo OF QRY_Contrato..BrowseItem
xlsWrite(xPlanilha, iLinha, iColuna, sCampo)
iColuna += 1
END

//===============================
// DADOS
//===============================
FOR EACH QRY_Contrato
iLinha += 1
iColuna = 1

FOR EACH sCampo OF QRY_Contrato..BrowseItem
xlsWrite(xPlanilha, iLinha, iColuna, {sCampo}..Value)
iColuna += 1
END
END

//===============================
// SALVA O ARQUIVO
//===============================
IF NOT xlsSave(xExcelDoc, sArquivoExcel) THEN
Error("Erro ao salvar a planilha.")
RETURN
END

//===============================
// RESULTADO
//===============================
Info("Exportação concluída com sucesso!", sArquivoExcel)




Notas importantes:
• A query QRY_Contrato precisa estar criada no editor de queries e marcada como browsable.
• A função QRY_Contrato..BrowseItem retorna a lista de colunas, e ..Value acessa o conteúdo.
• O caminho fCurrentDir() pode ser ajustado para qualquer diretório.
• O componente “xlsx” deve estar incluído no projeto (ou use xlsWrite da planilha compatível).



Alternativa com fExportCSV

Se quiser uma forma ainda mais leve, pode exportar para CSV direto:

fExportCSV(QRY_Contrato, sArquivoExcel, tabSep, True)

Mas esse método exige que a query esteja ligada a uma tabela ou usada com HExportCSV.


E aqui estão os links oficiais do Help da PC SOFT (help.windev.com) com os comandos usados para gerar planilhas Excel diretamente no disco, sem usar tabelas ou grids visuais:



1. xlsDocument

Representa um documento Excel em memória. Usado para criar, manipular e salvar planilhas Excel.

https://help.windev.com/en-US/…



2. xlsWorksheet

Representa uma aba (planilha) dentro de um documento Excel.

https://help.windev.com/en-US/…



3. xlsWrite

Escreve um valor em uma célula específica da planilha.

https://help.windev.com/en-US/…



4. xlsSave

Salva o documento Excel criado no disco, em formato .xlsx.

https://help.windev.com/en-US/…



5. HExecuteQuery

Executa uma query criada no editor de queries (WDSQL ou visual).

https://help.windev.com/en-US/…



6. FOR EACH

Percorre os registros de uma query (ou tabela HFSQL).

https://help.windev.com/en-US/…



7. ..BrowseItem

Retorna a lista de colunas da query (muito útil para montar dinamicamente o cabeçalho do Excel).

https://help.windev.com/en-US/…

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