Gerar arquivo CSV a partir de tabela

Oracle Application Express - web application development tool (antigamente conhecido como Oracle HTML-DB)
  

Mensagemem Seg, 03 Jun 2019 8:49 pm

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?
carlynhos77

Mensagemem Ter, 04 Jun 2019 12:57 pm

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. :roll:
Se possível, explique melhor o que você precisa.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 04 Jun 2019 2:04 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
Código: Selecionar todos
    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


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
Código: Selecionar todos
    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)


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...
Anexos
Proposta_BASE_apex.xls
Arquivo excel para gerar itens
(691 KiB) Baixado 47 vezes
carlynhos77

Mensagemem Ter, 04 Jun 2019 5:50 pm

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.
:-/
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 04 Jun 2019 6:06 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
carlynhos77

Mensagemem Ter, 04 Jun 2019 6:16 pm

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.

:-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Sex, 16 Ago 2019 5:57 pm

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.
aarao.primo
Localização: Rio de Janeiro



Voltar para Apex

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante