Ola, boa noite
Estou em busca de algum código que abra um arquivo .CSV ou XLS e escreva as linhas dentro dele... a opção download que existe nos relatorios, não sai da forma que eu preciso, por isso queria criar algo q já escreve num arquivo já formatado...
alguma dica?
Gerar arquivo CSV a partir de tabela
-
- Rank: Analista Sênior
- Mensagens: 172
- Registrado em: Seg, 24 Out 2016 7:20 pm
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Arquivo CSV nada mais é que um arquivo TEXTO delimitado por um separador, normalmente um ";".
1. O que você quer dizer com formatado ? Explica melhor que tipo de formatação você precisa.
2. "Abra um arquivo CSV ou XLS e escreva dentro". - Nunca vi nada parecido com isso.
Normalmente os programas abrem arquivos, geram arquivos. Mas eu nunca vi um programa abrindo um excel e modificando ele.
Se possível, explique melhor o que você precisa.
1. O que você quer dizer com formatado ? Explica melhor que tipo de formatação você precisa.
2. "Abra um arquivo CSV ou XLS e escreva dentro". - Nunca vi nada parecido com isso.
Normalmente os programas abrem arquivos, geram arquivos. Mas eu nunca vi um programa abrindo um excel e modificando ele.

Se possível, explique melhor o que você precisa.
-
- Rank: Analista Sênior
- Mensagens: 172
- Registrado em: Seg, 24 Out 2016 7:20 pm
Ola, boa tarde...
Então no visual basic 6, no meu sistema de licitação, eu tenho uma rotina que faz isso, eu tenho um arquivo no excel, que deixei ele no formato de colunas que preciso, dai o codigo, joga os dados nesse arquivo... vejo o codigo abaixo (utilizado no visual basic 6)
FUNÇAO
depois, num botão eu verifico se o arquivo existe, verifico se alguns campos chaves estão no lugar correto e chamo a funcao de copia os dados da grid para dentro do excel
No caso desse arquivo do excel, eu anexei ele aqui na mensagem, veja o q eu quero dizer sobre formatação.
Então, no APEX eu procuro algo que escreva dentro d um arquivo excel, caso tenha algo mais facil ou diferente, mas que gere um arquivo EXCEL, por favor, me de a dica... já adianto que a opcao nos relatorios de fazer o download não serve, sai muito fora do padrão que preciso
No meu sistema de licitação, para esse trabalho com o excel, terão 3 fases:
1 - Gero o arquivo com os itens
2 - o proponente, irá lançar somente o valor da proposta dele para cada item;
3 - no dia da licitacao, eu pego esse arquivo, e importo ele (por isso eu já preciso GERAR O ARQUIVO num padrão, pois preciso desse mesmo padrão para importar)
já montei tudo para importar, através da CARGA DE DADOS, que já existe dentro no apex, mas preciso garantir esse padrão no inicio da geração do arquivo
você disse q o CSV nada mais é do que um TXT delimitado, concordo... so que para um usuario comum, fica dificil ele complementar informaçoes, no caso, sua oferta de valor por item, por isso vou entregar para ele um arquivo XLS, é mais facil o preenchimento, quando ele me devolver, eu so salvo como .CSV, e já resolvo importo
Quando falo de arquivo formatado, é eu definir exatamento NOME DE COLUNAS, E EU TER ALGUMAS COLUNAS BLOQUEADAS PARA EDIÇÃO, É GARANTIR QUE O PROPONENTE NÃO ALTERE O LAYOUT DO ARQUIVO, ELE SO IRÁ LANÇAR VALORES, NADA MAIS...
Então no visual basic 6, no meu sistema de licitação, eu tenho uma rotina que faz isso, eu tenho um arquivo no excel, que deixei ele no formato de colunas que preciso, dai o codigo, joga os dados nesse arquivo... vejo o codigo abaixo (utilizado no visual basic 6)
FUNÇAO
Dim Caminho As String
Caminho = ""
Caminho = App.Path & "\Proposta_XLS\Proposta_BASE.xls"
'começa a importacao
Me.MousePointer = vbHourglass
'teste se existe registros para exportacao
If TotalFilas = 0 Then
MsgBox "Não existe registros para exportação, verifique!!!", vbInformation, "ATENÇÃO USUÁRIO"
Exit Sub
End If
'cria a conexao com o excel
Dim Obj_Excel As Excel.Application
Dim Obj_Libro As Excel.Workbook
Dim Obj_Hoja As Excel.Worksheet
Set Obj_Excel = New Excel.Application
Obj_Excel.Visible = False
Set Obj_Libro = Obj_Excel.Workbooks.Open(Caminho)
Set Obj_Hoja = Obj_Libro.Worksheets(1)
Dim Coluna1 As Integer
Coluna1 = "4"
Dim Coluna As Integer
Coluna = "0"
'inicia a exportacao
Dim X As Integer
Dim Y As Integer
For X = 4 To frmCadConIntLancItens.DataGrid1.Columns.Count - 1
If frmCadConIntLancItens.DataGrid1.Columns(X).Visible Then
'Coluna1 = Coluna1 + 1
Obj_Excel.Cells(1, Coluna1) = Label7.Caption
Obj_Excel.Cells(2, Coluna1) = Label1.Caption
Obj_Excel.Cells(3, Coluna1) = Label2.Caption
Obj_Excel.Cells(4, Coluna1) = Label3.Caption
Obj_Excel.Cells(5, Coluna1) = "TIPO: " & Label4.Caption
Obj_Excel.Cells(2, 6) = frmCadConIntLancItens.Label8.Caption
End If
Next
'For X = 0 To frmCadConIntLancItens.DataGrid1.Columns.Count - 1 ' PEGA AS COLUNAS AUTOMATICA
For X = 0 To 4
If frmCadConIntLancItens.DataGrid1.Columns(X).Visible Then
Coluna = Coluna + 1
'Obj_Excel.Cells(1, Coluna) = frmCadConIntLancItens.DataGrid1.Columns(X).Caption 'DA O TITULA DA COLUNA
For Y = 0 To TotalFilas - 1
Obj_Excel.Cells(Y + 9, Coluna) = frmCadConIntLancItens.DataGrid1.Columns(X).CellValue(frmCadConIntLancItens.DataGrid1.GetBookmark(Y))
ProgressBar2.Max = "5000"
ProgressBar2.Value = ProgressBar2.Value + 1
Next
ProgressBar2.Value = 0
End If
Next
Obj_Excel.Visible = True
Set Obj_Hoja = Nothing
Set Obj_Libro = Nothing
Set Obj_Excel = Nothing
Me.MousePointer = vbDefault
Dim PBase As Variant
PBase = ""
PBase = App.Path & "\Proposta_XLS\Proposta_BASE.xls"
Dim Results As String
Results = Dir$(PBase)
If Results = "" Then
MsgBox "O arquivo -- Proposta_BASE.xls -- não foi encontrado, verifique!!!", vbCritical, "ATENÇÃO USUÁRIO"
Exit Sub
End If
'desabilita botoes
cmdeditar.Enabled = False
cmdsair.Enabled = False
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
Dim Caminho As String
Caminho = ""
Caminho = Label6.Caption
Set xlw = xl.Workbooks.Open(Caminho)
xlw.Sheets("Plan1").Select
If xlw.Application.Cells(5, 6).Value <> "CNPJ:" Then
MsgBox "Planilha não atende ao layout do sistema, verifique!!!", vbInformation, "ATENÇÃO USUÁRIO"
xlw.Close False
Set xlw = Nothing
Set xl = Nothing
Exit Sub
End If
xlw.Close False
Set xlw = Nothing
Set xl = Nothing
Call Exportar_Datagrid(frmCadConIntLancItens.DataGrid1, frmCadConIntLancItens.DataGrid1.ApproxCount)
Então, no APEX eu procuro algo que escreva dentro d um arquivo excel, caso tenha algo mais facil ou diferente, mas que gere um arquivo EXCEL, por favor, me de a dica... já adianto que a opcao nos relatorios de fazer o download não serve, sai muito fora do padrão que preciso
No meu sistema de licitação, para esse trabalho com o excel, terão 3 fases:
1 - Gero o arquivo com os itens
2 - o proponente, irá lançar somente o valor da proposta dele para cada item;
3 - no dia da licitacao, eu pego esse arquivo, e importo ele (por isso eu já preciso GERAR O ARQUIVO num padrão, pois preciso desse mesmo padrão para importar)
já montei tudo para importar, através da CARGA DE DADOS, que já existe dentro no apex, mas preciso garantir esse padrão no inicio da geração do arquivo
você disse q o CSV nada mais é do que um TXT delimitado, concordo... so que para um usuario comum, fica dificil ele complementar informaçoes, no caso, sua oferta de valor por item, por isso vou entregar para ele um arquivo XLS, é mais facil o preenchimento, quando ele me devolver, eu so salvo como .CSV, e já resolvo importo
Quando falo de arquivo formatado, é eu definir exatamento NOME DE COLUNAS, E EU TER ALGUMAS COLUNAS BLOQUEADAS PARA EDIÇÃO, É GARANTIR QUE O PROPONENTE NÃO ALTERE O LAYOUT DO ARQUIVO, ELE SO IRÁ LANÇAR VALORES, NADA MAIS...
- Anexos
-
- Proposta_BASE_apex.xls
- Arquivo excel para gerar itens
- (691 KiB) Baixado 267 vezes
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Isso é o legal do VB, ele é meio que a "linguagem padrão" do Office.
No seu caso, você ta usando APEX.
Pelo que eu sei, no APEX não tem absolutamente nada parecido com isso.
Pergunta:
Tem como você chamar o VB pra fazer todo esse trabalho a partir do APEX?
(Digo, ter o VB instalado no servidor do apex, ou em um outro servidor).
Daí o seu programa em APEX executa uma rotina no sistema operacional que CHAMA o VB pra fazer todo esse serviço.
Dessa forma você pode continuar usando o VB pra fazer esse trabalho.
:-/
No seu caso, você ta usando APEX.
Pelo que eu sei, no APEX não tem absolutamente nada parecido com isso.
Pergunta:
Tem como você chamar o VB pra fazer todo esse trabalho a partir do APEX?
(Digo, ter o VB instalado no servidor do apex, ou em um outro servidor).
Daí o seu programa em APEX executa uma rotina no sistema operacional que CHAMA o VB pra fazer todo esse serviço.
Dessa forma você pode continuar usando o VB pra fazer esse trabalho.
:-/
-
- Rank: Analista Sênior
- Mensagens: 172
- Registrado em: Seg, 24 Out 2016 7:20 pm
Ola,
É no vb isso era facil rsssss... no apex, ta complicado
To pensando em criar um EXECUTAVEL que faça somente essa geração do arquivo, dai eu resolvo o problema, acredito que essa seja a saida... mas vou continuar pesquisando aqui
d qualquer forma, agradeço sua atenção
É no vb isso era facil rsssss... no apex, ta complicado
To pensando em criar um EXECUTAVEL que faça somente essa geração do arquivo, dai eu resolvo o problema, acredito que essa seja a saida... mas vou continuar pesquisando aqui
d qualquer forma, agradeço sua atenção
- dr_gori
- Moderador
- Mensagens: 5018
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Se você descobrir como fazer em Apex, manda pra gente a solução.
Mas sinceramente, eu acho que vai ser mais facil "terceirizar" essa tarefa pra um executável mesmo.

Mas sinceramente, eu acho que vai ser mais facil "terceirizar" essa tarefa pra um executável mesmo.

- aarao.primo
- Rank: Estagiário Sênior
- Mensagens: 8
- Registrado em: Seg, 08 Ago 2011 9:37 am
- Localização: Rio de Janeiro
Se quiser a nivel de aplicação o apex tem o relatório interativo que da a possibilidade de salvar em csv o resultado da query do relatório.
Ou você pode se for fazer a nível de banco um arquivo CSV salvar em uma tabela com o tipo blob e disponibilizar para download no apex.
Ou você pode se for fazer a nível de banco um arquivo CSV salvar em uma tabela com o tipo blob e disponibilizar para download no apex.
- madmax
- Rank: DBA Pleno
- Mensagens: 293
- Registrado em: Qua, 13 Dez 2006 5:02 pm
- Localização: São Paulo
- Contato:
________________________________
Douglas - Madmax.
Douglas - Madmax.
Ola Pessoal.
Faz tempo que não respondo e porque estava com muito serviço....
Vi que precisam de gerar CSV a partir de uma tabela no APEX.
Segue o passo a passo
1 - CRIAR UM BOTÃO NA PAGINA APEX COM AÇÃO SUBMIT PAGE
2 - DEPOIS CRIAR UM PROCESSO "Extrair Dados" type = pl/sql code
3 - No Source do processo "Extrair Dados" colocar o codigo para geração do CSV a partir de um select.
Espero ter ajudado a todos

Faz tempo que não respondo e porque estava com muito serviço....
Vi que precisam de gerar CSV a partir de uma tabela no APEX.
Segue o passo a passo
1 - CRIAR UM BOTÃO NA PAGINA APEX COM AÇÃO SUBMIT PAGE
2 - DEPOIS CRIAR UM PROCESSO "Extrair Dados" type = pl/sql code
3 - No Source do processo "Extrair Dados" colocar o codigo para geração do CSV a partir de um select.
declare
verifica number:=1;
begin
-- Aqui é definido o mime type do arquivo, ou seja csv
owa_util.mime_header( 'application/octet', FALSE );
-- Aqui é definido como o arquivo será apresentado, attachment para Download, filename será o nome do arquivo
htp.p('Content-Disposition: attachment; filename="Lista_Armazem.csv"');
-- Aqui é onde é fechado o header: A configuração do arquivo
owa_util.http_header_close;
-- Aqui fazemos um LOOP para varrer a tabela e recuperar o que será apresentado no csv.(O ideal é que seja a mesma query do relatório da página)
for x in (
select cnpj,
rz_social razao_social,
inscricao_estadual,
endereco,
bairro,
cep,
estado,
pais from adc_frt_armazens
)
loop
--Para cada coluna concatene um ";". Esse será o separador das colunas do csv.
--Concatene o chr(13) no final para a pular para a próxima linha
if verifica = 1 then
htp.prn('CNPJ'||';'|| 'Razao Social' ||';'|| 'Inscricao Estadual' ||';'|| 'Endereco' ||';'||
'Bairro' ||';'|| 'CEP' ||';'|| 'Estado' ||';'|| 'Pais' || chr(13));
end if;
htp.prn(x.cnpj ||';'|| x.razao_social ||';'|| x.inscricao_estadual ||';'||
x.endereco ||';'|| x.bairro ||';'|| x.cep ||';'|| x.estado ||';'|| x.pais || chr(13));
verifica := 2;
end loop;
--Use essa linha para caso ocorra algum erro
htmldb_application.g_unrecoverable_error := true;
end;




-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes