Domanda

ho un altro problema sconcertante.

ho bisogno di leggere i file .xls con RODBC. Fondamentalmente ho bisogno di una matrice di tutte le celle in un foglio, e quindi utilizzare greps e strsplits ecc per ottenere i dati fuori. Come ogni foglio contiene più tabelle in ordine diverso, e alcuni campi di testo con altre opzioni Inbetween, ho bisogno di qualcosa che funziona come readLines(), ma poi per i fogli di excel. Credo RODBC il modo migliore per farlo.

Il nucleo del mio codice è seguente funzione:

.read.info.default <- function(file,sheet){
    fc <- odbcConnectExcel(file)    # file connection
    tryCatch({
      x <- sqlFetch(fc,
                    sqtable=sheet,
                    as.is=TRUE,
                    colnames=FALSE,
                    rownames=FALSE
           )
      },
      error = function(e) {stop(e)},
      finally=close(fc)
    )

    return(x)
}

Tuttavia, qualunque ho provato, richiede sempre la prima riga del foglio menzionato come i nomi delle variabili del telaio dati restituiti. Nessun indizio come ottenere che risolto. In base alla documentazione, colnames=FALSE dovrebbe impedire questo.

Vorrei evitare il pacchetto xlsReadWrite. Edit: e il pacchetto gdata. Cliente non ha Perl sul sistema e non installarlo.


Modifica:

ho rinunciato e sono andato con read.xls() dal pacchetto xlsReadWrite. A parte il problema nome, si è scoperto RODBC non può realmente leggere le celle con i segni speciali come barre. Una data nel formato "gg / mm / aaaa" appena dato NA.

Guardando il codice sorgente di SQLFetch, sqlquery e sqlGetResults, mi sono reso conto che il problema è più che probabile nei driver. In qualche modo la prima riga del foglio è visto come qualche caratteristica colonna anziché una cellula normale. Così, invece di colnames, sono equivalenti a nomi di campo DB. E questa è un'opzione, non è possibile impostare ...

È stato utile?

Soluzione

Si può utilizzare la soluzione basato su Perl nel GData invece ? Questo accade per essere portabile troppo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top