|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV 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/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|