[リストへもどる]
一括表示

投稿時間:2004/06/03(Thu) 21:09
投稿者名:竜牙
Eメール:
URL :
タイトル:
csvファイルへの書き込み
こんばんは。書き込み失礼いたします。
もしかしたらVBとは関係なくなってしまうかもしれないのですが、
ファイルの書き込みの手立てを教えていただきたい為、こちらに書き込みました。
もしも場違いでしたらその旨のレス、お願い致します。


現在VB6.0でファイルの処理を行っています。

ADOのRecordsetで取得したデータをWrite#でcsvファイルに保存します。
保存したcsvファイルをテキストで開くと以下のように保存されています。

"氏名","郵便番号","住所"
"*****","0013322","***************"


ところが、このcsvファイルをExcelで開いた(ExcelはVB
プログラムではなく、csvファイルのアイコンダブルクリックし
て起動)ところ、以下のようになってしまいました。

------------------------------
  |  A   |    B     |   C    |
------------------------------
1 |氏名 |郵便番号 |住所  |
------------------------------
2 |***** |         0|********|
------------------------------(←見えないかもしれませんがExcelのセルです。)

郵便番号の"0013322"が日付型として読まれてしまい、正しく表記されません。
VBプログラムからExcelを起動するのであればこちらのHPに掲載されている、
「Excel上にCSV及びTXTファイルをデータ型を指定して読込む」を参考にできる
のですが、アイコンダブルクリックでExcelを起動するため、csvファイルに書き
込む部分から変えなければ正しく表示されないのではないかと考えております。

しかし、どのように書き込んでもExcel上で"0013322"が正しく表示されません。
どのように書き込んだら正しく表示されるでしょうか。
また、他に何か方法がございましたらアドバイスをよろしくお願い致します。

投稿時間:2004/06/03(Thu) 23:01
投稿者名:ken.1
Eメール:
URL :
タイトル:
Re: csvファイルへの書き込み
> こんばんは。書き込み失礼いたします。
> もしかしたらVBとは関係なくなってしまうかもしれないのですが、
> ファイルの書き込みの手立てを教えていただきたい為、こちらに書き込みました。
> もしも場違いでしたらその旨のレス、お願い致します。
>
>
> 現在VB6.0でファイルの処理を行っています。
>
> ADOのRecordsetで取得したデータをWrite#でcsvファイルに保存します。
> 保存したcsvファイルをテキストで開くと以下のように保存されています。
>
> "氏名","郵便番号","住所"
> "*****","0013322","***************"
>
>
> ところが、このcsvファイルをExcelで開いた(ExcelはVB
> プログラムではなく、csvファイルのアイコンダブルクリックし
> て起動)ところ、以下のようになってしまいました。
>
> ------------------------------
>   |  A   |    B     |   C    |
> ------------------------------
> 1 |氏名 |郵便番号 |住所  |
> ------------------------------
> 2 |***** |         0|********|
> ------------------------------(←見えないかもしれませんがExcelのセルです。)
>
> 郵便番号の"0013322"が日付型として読まれてしまい、正しく表記されません。
> VBプログラムからExcelを起動するのであればこちらのHPに掲載されている、
> 「Excel上にCSV及びTXTファイルをデータ型を指定して読込む」を参考にできる
> のですが、アイコンダブルクリックでExcelを起動するため、csvファイルに書き
> 込む部分から変えなければ正しく表示されないのではないかと考えております。
>
> しかし、どのように書き込んでもExcel上で"0013322"が正しく表示されません。
> どのように書き込んだら正しく表示されるでしょうか。
> また、他に何か方法がございましたらアドバイスをよろしくお願い致します。

はじめまして、ken.1と申します。
私も以前同じような状況ではまってしまいまして以下の方法で逃げました。
文字型のフィールドの頭に「'」を付加して出力する
先輩に散々バカにされた手法ですがよろしければ試してみてください(笑

修正:んーCSV拡張子のデータに「'」を付けると表示でも出てしまいますね…
   自分がやったのはエクセルに出力するときの対応でした
   出力されたデータはエクセルで見る以外に使用しないのであれば最初からエクセルに書き込むほうがいいのかもしれませんが…
   お役に立てず申し訳ありません。

投稿時間:2004/06/04(Fri) 09:20
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: csvファイルへの書き込み
過去の書き込み(新の掲示板の No.7423 No.2653)にもあったと思うのですが、
CSVファイルに書き出す時に文字列の数字は値の前に = を付加すると表示できます。
メモ帳で '0013322,="0013322",""="0013322" を記入して、ファイル名をTest.csvと
でもして保存してダブルクリックしてExcelで表示してみて下さい。
="0013322" の場合は数値として計算もできます。又、ExcelからCSV形式で保存しても
0013322 のように保存されます。
貴方の仕様で問題がないかは確認願います。

投稿時間:2004/06/04(Fri) 10:28
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: csvファイルへの書き込み
以下は個人的な意見ですが。

そもそもCSVファイルはExcelで見るためのファイルっていうワケではありません。
Excelでの表示にこだわるあまり、CSVデータとしての本質を失うようなら本末転倒だと、私は思います。

どうしてもExcelでの見た目を重視したいならExcelファイルを出力した方がイイと思いますよ。

投稿時間:2004/06/05(Sat) 03:35
投稿者名:竜牙
Eメール:
URL :
タイトル:
Re: csvファイルへの書き込み
ken.1さん、花ちゃんさん、nanashiさん。
皆様どうもありがとうございます。

確かに"="を数値の前につけたら文字列として扱ってくれました。

CSVファイルについての意見もごもっともです。

仕様書にはただ「CSVファイルとした保存する」と書かれており、
実際に使用するユーザがどのようにしてそのCSVファイルを活用
するかという点については正確にはわかっていないのです。
ただ、CSVファイル形式でファイルを保存しダブルクリックをする
とExcelで表記されるため、ではExcelで表記したらどうなるんだろう
という考えからプログラムを作ってみて、詰まってしまいまして・・・・・。
本当に申し訳ございませんでした。

皆様、本当にありがとうございました。