none
Trabalhando arquivos XLS e XLSX RRS feed

  • Pergunta

  • Boa tarde caros Dev's

    Estou criando uma aplicação e dentro dela preciso abrir um arquivo do Excel *.xls e converter para *xlsx.

    Criei um botão somente pra isso com o seguinte codigo:

     Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
            Dim arq As New OpenFileDialog
            Dim xlApp As New Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim folder As New SaveFileDialog
    
            arq.Filter = "Excel (*.xls)|*.xls"
            folder.Filter = "Excel (*.xlsx)|*.xlsx"
    
            If arq.ShowDialog = Windows.Forms.DialogResult.OK Then
                xlWorkBook = xlApp.Workbooks.Open(arq.FileName)
                xlApp.Visible = True 'Somente para verificar se o arquivo está abrindo
                If folder.ShowDialog = Windows.Forms.DialogResult.OK Then
                    xlWorkBook.SaveAs(folder.FileName, Excel.XlFileFormat.xlWorkbookDefault, AccessMode:=Excel.XlSaveAsAccessMode.xlNoChange)
                    xlApp.Visible = False
                    xlApp.Quit()
                    btnAbrir.PerformClick()
                Else
                    MsgBox("Nenhum arquivo salvo.")
                End If
    
            Else
                MsgBox("Nenhum arquivo selecionado.")
            End If
        End Sub

    O código funciona, ou seja consigo abrir o xls e salvar em xlsx, especificando o nome novo e o local onde será salvo e logo apos disparando outro botão pra abrir o xlsx para um datagridview.

    O problema é que a planilha xls contem formulas, e ao usar o um simples 

    xlApp.Visible = True

    para ver se como a planilha estava sendo "aberta" percebi que onde haviam formulas elas não foram calculadas, ficaram como texto, e mesmo depois de salvar em xlsx tb ficou como texto.

    Alguém sabe como resolver esse problema?

    Obrigado.

    quarta-feira, 9 de dezembro de 2015 18:20

Respostas

  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ segunda-feira, 28 de dezembro de 2015 13:15
    segunda-feira, 28 de dezembro de 2015 13:14

Todas as Respostas

  • Boa tarde caros Dev's

    Estou criando uma aplicação e dentro dela preciso abrir um arquivo do Excel *.xls e converter para *xlsx.

    Criei um botão somente pra isso com o seguinte codigo:

     Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
            Dim arq As New OpenFileDialog
            Dim xlApp As New Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim folder As New SaveFileDialog
    
            arq.Filter = "Excel (*.xls)|*.xls"
            folder.Filter = "Excel (*.xlsx)|*.xlsx"
    
            If arq.ShowDialog = Windows.Forms.DialogResult.OK Then
                xlWorkBook = xlApp.Workbooks.Open(arq.FileName)
                xlApp.Visible = True 'Somente para verificar se o arquivo está abrindo
                If folder.ShowDialog = Windows.Forms.DialogResult.OK Then
                    xlWorkBook.SaveAs(folder.FileName, Excel.XlFileFormat.xlWorkbookDefault, AccessMode:=Excel.XlSaveAsAccessMode.xlNoChange)
                    xlApp.Visible = False
                    xlApp.Quit()
                    btnAbrir.PerformClick()
                Else
                    MsgBox("Nenhum arquivo salvo.")
                End If
    
            Else
                MsgBox("Nenhum arquivo selecionado.")
            End If
        End Sub

    O código funciona, ou seja consigo abrir o xls e salvar em xlsx, especificando o nome novo e o local onde será salvo e logo apos disparando outro botão pra abrir o xlsx para um datagridview.

    O problema é que a planilha xls contem formulas, e ao usar o um simples 

    xlApp.Visible = True

    para ver se como a planilha estava sendo "aberta" percebi que onde haviam formulas elas não foram calculadas, ficaram como texto, e mesmo depois de salvar em xlsx tb ficou como texto.

    Alguém sabe como resolver esse problema?

    Obrigado.

    Ninguem faz ideia de como posso resolver isso?
    sábado, 12 de dezembro de 2015 02:17
  • Olá Don Medina,

    Tudo bem?

    Tente usar xlXMLSpreadsheet em vez de xlWorkbookDefault
    xlWorkBook.SaveAs(folder.FileName, Excel.XlFileFormat.xlXMLSpreadsheet, AccessMode:=Excel.XlSaveAsAccessMode.xlNoChange)

    Fonte:

    https://msdn.microsoft.com/en-us/library/ee317478.aspx?f=255&MSPPError=-2147217396
    https://msdn.microsoft.com/en-us/library/office/microsoft.office.interop.excel.workbooks.open.aspx
    https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas.aspx
    https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspx?f=255&MSPPError=-2147217396

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ quarta-feira, 16 de dezembro de 2015 12:36
    • Sugerido como Resposta Marcos SJ quarta-feira, 16 de dezembro de 2015 19:33
    quarta-feira, 16 de dezembro de 2015 12:34
  • Bom dia, Marcos.

    Ao fazer essa alteração que você me sugeriu, obtive essa resposta:

    quinta-feira, 17 de dezembro de 2015 02:29
  • Don Medina,

    Que tipo de fórmulas você está usando, as fórmulas não calculadas são mostradas em um XLSX ou em uma datagridview?

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 23 de dezembro de 2015 18:26
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Marcos SJ segunda-feira, 28 de dezembro de 2015 13:15
    segunda-feira, 28 de dezembro de 2015 13:14
  • Desculpa pela falta de resposta,

    Estive viajando e quando voltei o PC estava com problemas, retornando as atividades hoje.

    Mas não resolvi o problema.

    Mas desde já obrigado.

    segunda-feira, 28 de dezembro de 2015 13:17
  • Don Medina,

    Que tipo de fórmulas você está usando, as fórmulas não calculadas são mostradas em um XLSX ou em uma datagridview?


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 28 de dezembro de 2015 13:50
  • Boa tarde,

    No arquivo do excel a formula é simples. Uma delas é =ESQUERDA(A2;14)

    Quando faço o procedimento, tanto no datagridview quanto no arquivo xlsx gerado ao contrario de mostrar o resultado fica só a formula. E a na coluna onde eu tenho datas algumas invertem para o padrão americano, MM/DD/AAAA.

    Obrigado

    segunda-feira, 28 de dezembro de 2015 14:02