none
Convertir *.csv a *.xlsx en Aplicacion .Net

    Question

  • Buenas a todos!

    Estoy haciendo un pequeña aplicacion en vb.net, donde adquiero de otra aplicación un archivo *.csv.

    Ahora lo que intento hacer es tratar ese archivo como un libro de excel *xlsx, para poder recorrer columnas, filas, celdas etc ...

    Estaba tratando hacerlo con el siguiente código

        Private Sub CsvToXlsx()
        Dim MyChar As Char() = {"."c, "x"c, "l"c, "s"c, "x"c} 
        Dim csv As Char() = {"."c, "c"c, "s"c, "v"c} 
            Dim MyExcel As Microsoft.Office.Interop.Excel.Application
    
            Try
                MyExcel = CreateObject("Excel.Application") 
                MyExcel.Workbooks.Open(OpenFileDialog.FileName) 
                MyExcel.Visible = True 
                archivoCsvXlsx = OpenFileDialog.FileName.TrimEnd(csv) & ".xlsx"
                MyExcel.Application.ActiveWorkbook.SaveCopyAs(Filename:=archivoCsvXlsx)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
        End Sub

    Me crea el archivo pero no algo debo de hacer mal, porque no puedo abrirlo!

    Agradezco cualquier sugerencia

    Un Saludo y Gracias!

    Saturday, December 08, 2012 1:42 PM

All replies

  • en principio excel abre los csv sin problemas: lo abres y luego lo guardas como xlsx....y ya estaría convertido!
    Saturday, December 08, 2012 1:57 PM
  • Buenas

    Si, eso lo hace, el problema es que luego ya no puede tratar ese archivo, porque me sale el siguiente error:

    Excel no puede abrir el archivo *.xlsx porque el formato o la extensión de este no son validos. Compruete que el archivo no se ha dañado y que la extensión del mismo coincice con el formato del archivo.

    Sin embargo si yo directamente abro el archivo *.csv y lo guardo en el excel como libro *.xlsx, despues lo puedo abrir perfectamente, pero la idea es no tener que hacerlo manualmente.

    Gracias

    Edito: Agregar comentario

    Un compañero me ha facilitado el siguiente Script que funciona, he intentado pasarlo a vb.net pero no lo he conseguido, siempre obtengo errores  en los argumento de TextToColumns  #Sheets(1).Columns("A").TextToColumns .Range("A1"), xlDelimited, , , , True#

    Option Explicit
    
    Const xlDelimited = 1
    Const xlNormal = -4143 
    
    Dim Excel
    
    Set Excel = CreateObject("Excel.Application")
    With Excel
    	.Workbooks.Open "C:\Users\Admin\Desktop\prueba.csv"
    	.Sheets(1).Columns("A").TextToColumns .Range("A1"), xlDelimited, , , , True  
    	.ActiveWorkbook.SaveAs .ActiveWorkbook.Path & "C:\Users\Admin\Desktop\prueba.csv", xlNormal
    	.Quit
    End With

    • Edited by jm76 Saturday, December 08, 2012 6:59 PM
    Saturday, December 08, 2012 2:06 PM
  • Siempre es bueno que postee el error para poder analizar el problema

    Angel R. Jimenez G.
    Santo Domingo
    Republica Dominicana
    Blog

    Saturday, December 08, 2012 8:35 PM
  • Buenas y Gracias por la recomendación.

    El Error del primer código es el siguiente:

    Porque se ha guardado como archivo xlsx, pero no lo puedo editar

    Excel no puede abrir el archivo *.xlsx porque el formato o la extensión de este no son validos. Compruete que el archivo no se ha dañado y que la extensión del mismo coincice con el formato del archivo.

    Saludos

    Saturday, December 08, 2012 8:45 PM