2011-10-07 20 views
6

me han escrito un simple servicio web que devuelve grandes volúmenes de datos CSV. Importaré esto en Excel en formato tabular usando la función "Datos desde la Web" de Excel.importar datos CSV de servicio web en Excel

¿Hay una manera de conseguir Excel para analizar automáticamente los campos CSV devueltos en columnas individuales como parte de la operación de importación?

En la actualidad, el único medio que tengo para hacer esto es importar primero los datos en una sola columna y luego escribir el código VBA para seleccionar los datos y dividirlos usando TextToColumns. Esto se siente sucio/propenso a errores.

La otra alternativa es que tengo que modificar el servidor web para servir de vuelta los datos como HTML. Sin embargo, soy reacio a hacer esto ya que agregar etiquetas alrededor de cada campo csv tendrá un gran impacto en el volumen de datos devueltos.

+0

¿Qué versión de Excel? –

+0

@Clare: Excel 2007. – Adamski

Respuesta

1

Adamski,

Aquí hay algo que yo uso. Encontré el núcleo en algún lugar de Internet, pero no sé dónde.

Lo que hace es que se abre un archivo separado ficha y lee los datos en una hoja de Excel

If Answer1 = vbYes Then 'I asked prior if to import a tab separated file 
    Sheets("ZHRNL111").Select 'Select the sheet to dump the data 
    On Error Resume Next 
    With ActiveSheet 
     If .AutoFilterMode Then .ShowAllData 'undo any autofilters 
    End With 
    Sheets("ZHRNL111").Cells.Clear 'remove any previous data 
    On Error GoTo 0 
    Range("A1").CurrentRegion.Delete 
    Fname = MyPath & "\LatestReports\Report-111.tsv" 
    Open Fname For Input As #1 
    iRow = 1 
    Line Input #1, Record 
    On Error Resume Next 
    Do Until EOF(1) 
     P = Split(Record, vbTab) 
     For iCol = 1 To 14 
      Cells(iRow, iCol) = P(iCol - 1) 
     Next iCol 
     iRow = iRow + 1 
     Line Input #1, Record 
    Loop 
    On Error GoTo 0 
    Close 1 
End If 

Saludos,

Robert Ilbrink

+0

¿Cómo funciona con los delimitadores de columna dentro de los datos? tiene que ser escapado de alguna manera, y el Split es ignorante de eso, ¿no? – zrz

1

Dependiendo de la versión de Excel que está ejecutando debe ser capaz de abrir la .csv en Excel y utilizar el texto a columnas característica integrada en Excel.

Además, si se podía modificar csv para dividir columnas basadas en comas "" en lugar de pestañas sobresalen abriría directamente sin la necesidad de formatearlo. Sé que esto a veces puede ser un problema dependiendo de los datos que está importando, porque si los datos contienen una coma, deben estar dentro de las citas. En mi experiencia, la mejor manera es usar citas en todos los campos, si es posible.

Espero que esto ayude.

1

De hecho, estoy creando un producto en este momento para hacer esto en XML y JSON para Excel. Sé que la coma delimitada funciona en Excel, con algunas advertencias. Una forma de evitarlo es colocar "" alrededor del texto entre los delimitadores para la función "Datos de la Web". Sin embargo, todavía hay problemas con eso. Descubrí que, a pesar de su mayor tamaño, XML era la mejor opción para un cambio rápido. Pude crear el servicio y entregarle a mi gerente de proyecto el documento de Excel que pudo actualizar en cualquier momento.

+0

Gracias. De hecho, construí algo en torno a un servicio web que sirve csv al final y luego confío en que el usuario final realice una operación de "Texto a columnas" en los datos. Sin embargo, está lejos de ser ideal dados los enormes volúmenes de datos que estoy importando. – Adamski

Cuestiones relacionadas