8

RODBC を使用して Excel2007 ファイルに書き込もうとしていますが、エラーが発生し続けます。この非常に基本的なケース、文字、数値、日付、および論理データ型を持つ 1 行の data.frame に問題を減らしました。

toWrite = data.frame( Name = "joe" , Date = as.Date("2011-01-01"), Value = 2 , Paid = FALSE )
xlFile = odbcConnectExcel2007( "REPLACE_WITH_XLSB_FILE_PATH" , readOnly = FALSE )
sqlSave( xlFile , toWrite , tablename = "worksheet1" , rownames = FALSE )

エラー:

Error in sqlSave(xlFile, toWrite, tablename = "worksheet1", rownames = FALSE) : 
  [RODBC] Failed exec in Update
22018 39 [Microsoft][ODBC Excel Driver]Invalid character value for cast specification 
In addition: Warning message:
In odbcUpdate(channel, query, mydata, coldata[m, ], test = test,  :
  character data 'FALSE' truncated to 1 bytes in column 'Paid'

日付列と論理列の両方を文字に変換すると、すべて正常に機能します。問題は、これらが Excel の文字になり、変換しないと意図したデータ型として使用できないことです。私は sqlSave コードを掘り下げましたが、正しいことをしているようです。他の誰かがこの問題に遭遇しましたか?

4

4 に答える 4

19

varTypesこれにつまずいた人は誰でも (5 年後)、R では引数をsqlSave()likeで使用できますsqlSave(..., varTypes = c(somecolname="datetime", anothercolname= "datetime",...))

于 2017-06-12T18:11:08.000 に答える
1

以前にこの問題について聞いたことがあります。

回避策:

  • false には「0」を使用します。
  • 支払い済みをテキスト フィールドとして設定する
  • True に !=0 を使用するようにアプリケーション ロジックを変更します。

バグ チケット # を探して追跡します

于 2011-10-24T22:06:07.490 に答える
0

この質問を閉じます。キャラクターに変換する以外に良い修正はないようです。データを一時 CSV ファイルに書き込み、Excel を開き、CSV をインポートするコマンド ライン プログラムを作成することにしました。

于 2011-11-01T21:28:59.673 に答える