2

別の不可解な問題があります。

RODBC で .xls ファイルを読み取る必要があります。基本的に、1 つのシートにすべてのセルのマトリックスが必要であり、grep や strsplits などを使用してデータを取得します。各シートには複数のテーブルが異なる順序で含まれており、いくつかのテキスト フィールドの間に他のオプションが含まれているため、のようreadLines()に機能するものが必要ですが、Excel シートの場合は. RODBC はそれを行うための最良の方法だと思います。

私のコードのコアは次の関数です:

.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)
}

それでも、私が試したものは何でも、返されたデータ フレームの変数名として、言及されたシートの最初の行が常に使用されます。それを解決する方法はわかりません。ドキュメントによると、colnames=FALSEそれを防ぐ必要があります。

xlsReadWriteパッケージは避けたいです。編集:およびgdataパッケージ。クライアントのシステムに Perl がなく、インストールされません。


編集:

諦めてパッケージread.xls()から一緒に行きました。xlsReadWrite名前の問題は別として、RODBC は、スラッシュなどの特殊記号を含むセルを実際には読み取れないことが判明しました。「dd/mm/yyyy」形式の日付は、NA を示しました。

sqlFetch、sqlQuery、および sqlGetResults のソース コードを見て、問題がドライバーにある可能性が高いことに気付きました。どういうわけか、シートの最初の行は、通常のセルではなく、列の機能として表示されます。したがって、colnames の代わりに、DB フィールド名に相当します。そして、それはあなたが設定できないオプションです...

4

1 に答える 1

1

代わりに、 gdataでPerlベースのソリューションを使用できますか?それもたまたまポータブルです...

于 2010-11-18T17:25:19.903 に答える