![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
開発環境:Visual Basic 2008
教えて下さい。
あるホームページを参考に、CSV出力のプログラム(下記)を作成していますが、その際に、
どうやらデータは出力されているももの、ファイルを開いてもデータの中身が見れません。
メモ帳で開くとデータは存在しています。
何か記述漏れ等ありますでしょうか?
初歩的なトラブルで申し訳ありませんが、教えて下さい。
よろしくお願いします。
《記述内容》
Dim dt As DataTable = CType(G_DATA.DataSource, DataTable)
'保存先のCSVファイルのパス
Dim csvPath As String = "C:\test1.csv"
'CSVファイルに書き込むときに使うEncoding
Dim enc As System.Text.Encoding = _
System.Text.Encoding.GetEncoding("Shift_JIS")
'開く
Dim sr As New System.IO.StreamWriter(csvPath, False, enc)
Dim colCount As Integer = dt.Columns.Count
Dim lastColIndex As Integer = colCount - 1
'ヘッダを書き込む
Dim i As Integer
For i = 0 To colCount - 1
'ヘッダの取得
Dim field As String = dt.Columns(i).Caption
'"で囲む必要があるか調べる
If field.IndexOf(ControlChars.Quote) > -1 OrElse _
field.IndexOf(","c) > -1 OrElse _
field.IndexOf(ControlChars.Cr) > -1 OrElse _
field.IndexOf(ControlChars.Lf) > -1 OrElse _
field.StartsWith(" ") OrElse _
field.StartsWith(ControlChars.Tab) OrElse _
field.EndsWith(" ") OrElse _
field.EndsWith(ControlChars.Tab) Then
If field.IndexOf(ControlChars.Quote) > -1 Then
'"を""とする
field = field.Replace("""", """""")
End If
field = """" + field + """"
End If
'フィールドを書き込む
sr.Write(field)
'カンマを書き込む
If lastColIndex > i Then
sr.Write(","c)
End If
Next i
'改行する
sr.Write(ControlChars.Cr + ControlChars.Lf)
'レコードを書き込む
Dim row As DataRow
For Each row In dt.Rows
For i = 0 To colCount - 1
'フィールドの取得
Dim field As String = row(i).ToString()
'"で囲む必要があるか調べる
If field.IndexOf(ControlChars.Quote) > -1 OrElse _
field.IndexOf(","c) > -1 OrElse _
field.IndexOf(ControlChars.Cr) > -1 OrElse _
field.IndexOf(ControlChars.Lf) > -1 OrElse _
field.StartsWith(" ") OrElse _
field.StartsWith(ControlChars.Tab) OrElse _
field.EndsWith(" ") OrElse _
field.EndsWith(ControlChars.Tab) Then
If field.IndexOf(ControlChars.Quote) > -1 Then
'"を""とする
field = field.Replace("""", """""")
End If
field = """" + field + """"
End If
'フィールドを書き込む
sr.Write(field)
'カンマを書き込む
If lastColIndex > i Then
sr.Write(","c)
End If
Next i
'改行する
sr.Write(ControlChars.Cr + ControlChars.Lf)
Next row
'閉じる
sr.Close()
No.3
- 回答日時:
> CSVファイルをダブルクリックした際に、中身のデータが見えないという事です。
メモ帳で見えているならCSVファイルは出来ています。
あなたが何のAPをCSVファイルに関連付けているのか解りませんが、もしExcelで開けないと言うことでしたら、単にExcelの設定の問題である可能性があります。
オプション→詳細設定→全般→「Dynamic Data Exchange (DDE) を使用する他のアプリケーションを無視する」のチェックを外してみて下さい。
#Excel2007の場合(ほかのバージョンは適当に調べて下さい)
No.1
- 回答日時:
こんちは。
プログラム読むのはかったるいので読みません。。。あしからず。。。
>>どうやらデータは出力されているももの、ファイルを開いてもデータの中身が見れません。
>>メモ帳で開くとデータは存在しています。
どういう意味ですか???
データは出力されていてデータの中身は無いけれどもメモ帳で開くとデータはある。
ん???
ファイルは存在するんですよね。
test1.csv
中身はどうなってるんですか?
見た感じ、カンマ区切りCSVですよね?
メモ帳で開いた際に、
項目名1,項目名2,項目名3,項目名4,項目名5
ああああ,いいいい,うううう,ええええ,おおおお
かかかか,きききき,くくくく,けけけけ,ここここ
ささささ,しししし,すすすす,せせせせ,そそそそ
って感じのが望まれる結果だと思うのですが
データは出力されてるけどメモ帳で開いて中身がない?
イマイチ良くわからないです。
ファイルはあるけど中身がない。
ってだけなら、ファイル作成処理のところは問題ないことになるので、
項目のデータ取得するところ、もしくは、データをファイル内に書き込む箇所
がおかしいんでしょうね。
その辺にあたりをつけてデバックされるといいでしょう。
STICKY2006様、ご回答ありがとうございます。
わかりにくい内容で申し訳ありません。
不思議な現象で、、、、
test1.csvというファイルは最初からマスターファイルのような活用する為に存在し、
そこへデータを書き込むというような作りをしています。
処理を実行させると、エラーも出ず正しく終了され、test1.csvのデータサイズも増えて
いる為、データは出力されているだろうとは思われますが、いざ実際にファイルを開くと
データが書き込まれていません、、、
但し、データサイズが増えている為、書き込まれているんじゃないかと思い、メモ帳で
開くとおっしゃる通り、
項目名1,項目名2,項目名3,項目名4,項目名5
ああああ,いいいい,うううう,ええええ,おおおお
かかかか,きききき,くくくく,けけけけ,ここここ
ささささ,しししし,すすすす,せせせせ,そそそそ
と出力されています。
CSVファイルをダブルクリックした際に、中身のデータが見えないという事です。
エラーも何も起きず、デバックも問題ない為、何がおかしいのか掴めず、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
Perlの変数に文字数制限(容量...
-
エクセルVBA コードが同じでも...
-
C#でCSVファイルを逐一更新したい
-
指定行データの取得
-
perl内でPHPを動かす?
-
ファイル読み込みと書き込み
-
データファイルをプロットする(...
-
5行おきに5行ずつ抽出するに...
-
VBAで巨大なファイルの途中から...
-
openした後、closeしないでプロ...
-
batファイルでrenameができませ...
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
Firefox で file:// で始まる U...
-
ファイル出力の改行コードをLFに
-
fopenでディレクトリ内の全ファ...
-
[Perl]ファイル出力のエンコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
ReadLineでの読み出し行を指定する
-
エクセルVBA コードが同じでも...
-
csvファイル改行コードの置換に...
-
perlにて2つのファイル比較
-
C言語でのファイルのデータ更...
-
Perlの変数に文字数制限(容量...
-
JavaでCSVファイルを高速に読む...
-
VB6.0でDB接続する際に切断時の...
-
MATLAB グローバル変数の宣言
-
alarmのタイムアウト後の処理で...
-
DBMとテキストファイルのどちら...
-
perlで、後ろの行を読んで、前...
-
拡張子 ”log” と ” dat” の違い
-
5行おきに5行ずつ抽出するに...
-
テキストデータから指定した1...
おすすめ情報