
開発環境: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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
対比較データを表データに変換
-
エクセルマクロについて CSVフ...
-
Windowsで複数のファイルを同じ...
-
MATLABのm-fileについて
-
readdir()で得られるファイル・...
-
dos変数の%~dp0は powershellで...
-
MATLAB std::exceptionエラー
-
batファイルでrenameができませ...
-
重複するデータを抽出できる秀...
-
LWPでPOST送信した後に送信先に...
-
Perlでファイルの末尾から指定...
-
htaccessで特定のディレクトリ...
-
C言語で特定の行を抽出する方法...
-
FindFirstFileとFindNextFileで...
-
ファイルの削除について
-
sprintfについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルを途中行まで...
-
ReadLineでの読み出し行を指定する
-
VBAで巨大なファイルの途中から...
-
VB6.0でDB接続する際に切断時の...
-
MATLAB グローバル変数の宣言
-
openした後、closeしないでプロ...
-
CSVが可変長の場合の検索方法
-
データファイルの行を削除する
-
5行おきに5行ずつ抽出するに...
-
データファイルをプロットする(...
-
Perlの変数に文字数制限(容量...
-
拡張子 ”log” と ” dat” の違い
-
【VBA】複数のエクセルファイル...
-
JavaでCSVファイルを高速に読む...
-
CGI(Perl)でWeb上から作成...
-
検索ボックスから製品名を検索...
-
CSVファイルの内容を編集する方...
-
ADOによるCSVファイルからのデ...
おすすめ情報