- PR -

Excelをインポートすると数値がnullになる

1
投稿者投稿内容
ヨーキー
会議室デビュー日: 2007/11/20
投稿数: 16
投稿日時: 2008-05-07 17:18
いつもお世話になっております。
皆様にはこんな現象起きませんでしょうか。

【.NET2003VBプログラム】
.NETのDataGridのデータをコピーしExcelに貼り付けます。

【SQLServer2005】
そのデータをSQLデータベースにインポートします。
途中でプレビューを押してみると数値が消えています。
インポート後データベースを見ても数値は空です。(フィールドはVarchar型)

【Excel2000】
消えるのでExcel側を文字列形式にして保存しても
インポートウィザードのプレビューでは消えて見えます。

’を数値の前に書いたら上手く表示されインポートも出来ました。
しかし膨大な数値の個数だと’を書いていくのも大変です。
何かいい案は無いでしょうか。

環境:
WinXP Pro, VS.NET2003, SQL Server2005, Excel2000
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-07 18:23
試せる環境がないのでここだけ。

引用:

ヨーキーさんの書き込み (2008-05-07 17:18) より:

’を数値の前に書いたら上手く表示されインポートも出来ました。
しかし膨大な数値の個数だと’を書いていくのも大変です。
何かいい案は無いでしょうか。


これに関しては簡単なマクロを組んでとりあえず対処されてはいかがでしょうか? 今後も同じ作業が発生するならば根本的な解決を図った方がよろしいかと思いますが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
むーみん
常連さん
会議室デビュー日: 2005/06/23
投稿数: 41
投稿日時: 2008-05-07 18:25
こんばんは。

.NETのDataGridのデータをコピーしてExcelに貼り付ける前に、Excel側で、Varchar型の数字がセットされる列の表示形式を文字列にしたあとで、コピーデータをExcelに貼り付ける際に「形式を選択して貼り付け」で、テキストとして貼り付けしたらうまくいかないでしょうか。

RUN
常連さん
会議室デビュー日: 2007/10/05
投稿数: 32
お住まい・勤務地: 東京都
投稿日時: 2008-05-07 23:27
引用:

ヨーキーさんの書き込み (2008-05-07 17:18) より:

’を数値の前に書いたら上手く表示されインポートも出来ました。



という所から、標準書式のエクセルにデータを貼り付けた事により、
数字データが数値として扱われて、文字型データへのインポート取り込みが失敗している。
という可能性が高いと思います。

エクセルの操作挙動って結構複雑で、
標準書式に貼り付け、その後書式を文字列にする。
という操作を行っても、中のデータが数字扱いのままだったりします。

別シートを用意して
1:そのシートを文字列書式に設定
2:インポートのうまくいかないデータをコピー
3:別シートに右クリックの形式を選択して貼り付けを使って値のみコピー
この手順でもうまくいかないでしょうか?

一応、他の代替案として、完全な場当たり処理ですが
エクセルのシートからメモ帳等のエディタにコピー
[タブ文字]を['タブ文字]へ全置換
[改行文字]を['改行文字]へ全置換
一番最初のデータに'をつける
データの最後に余分な'が付いている筈なので、それを削除
エディタからエクセルに貼り付けなおす
の手順で全てのデータに'をつけることが出来ると思います。

実際の症状を見てないので、間違ってるかも知れませんが、
文字列のデータに対してエクセル上で頭に'が付加されても、
うまくインポートが行くかと思います。
ヨーキー
会議室デビュー日: 2007/11/20
投稿数: 16
投稿日時: 2008-05-08 10:24
ご教授ありがとうございましたm(_ _)m

やはり貼り付ける前の準備がキーみたいです。
貼り付ける前に文字列形式にしたら上手くインポート出来ました。

@DataGridのデータをコピーする。
AExcelシート内で数値を貼る列を文字列形式にする
BExcelへ形式を選択して貼り付け-テキスト(or 普通の貼り付けでも一応OK)
CExcelからSQLデータベースにインポート

この様な流れで今回処理してみます。
1

スキルアップ/キャリアアップ(JOB@IT)