引用:
ファイル形式はエクセルになります。
ならばスキャンされているのは「ソースの最初の 8 行」のはず。
引用:
これまでずっとインポート先のフィールドのデータ型に合わせて
インポートされているのだと思っていました。
それができれば簡単だったのですが。。。
一定のフォーマットで保存されているテキストファイルを
既存のテーブルにインポートするケースについては、
テキストインポートウィザードを実行する過程で
あらかじめインポート定義を作成しておき、
次回以降のインポート時にその定義を呼び出す、
という方式を採るのが一般的です。
できるネット より:
https://dekiru.net/article/15656/
https://dekiru.net/article/15657/
Excel ワークシートを既存のテーブルにインポートするケースに関しては、
上記のインポート定義と同等の機能がありません。
また、スプレッドシートインポートウィザードにおいて
フィールドごとにデータ型の指定が出来るのは、
そのワークシートを新規テーブルとしてインポートする時だけです。
(その際のインポート操作を保存しておいて後から呼び出すことは
出来ますが、テーブル定義をまるごと置き換える形になるため、
格納済みのレコードは全て削除されます)
引用:
ということは、一つのフィールド(列)内のデータは
予めデータ型をそろえておかないといけないということですね。
あらかじめそのように対処しておくのが最善ではあります。
特に「ユーザーが直接手を加えたワークシート」の場合、
どこにどんなノイズが混入しているかは、実際のワークシートを
検証しない限り、誰にも分かりません。
また、インポート先のフィールドのデータ型がテキスト型ならともかく、
「数値データに変換できない文字列」をそのまま数値型のフィールドに
格納することはできませんし、日付/時刻型のフィールドについても同様です。
そういったケースまで回避したければ、Excel ワークシート側の
各セルの表示形式やデータの入力規則などを適切に設定しておき
(そういうテンプレートを用意して使用してもらうようにし)、
エラーを招くデータがユーザーによって入力される余地を
可能な限り減らすようにしておくことが推奨されます。
(それでもエラーが発生する可能性をゼロにすることは出来ませんが)