【先着1,000名様!】1,000円分をプレゼント!

普通のCSVの行末にはカンマはあるものなんですか?
CSVのきちんとした定義があればそれも教えてください。
エクセルは持ってないんですが、エクセルだと行末のカンマは有りますか?

ファイル末の改行の有無についても教えてください。

A 回答 (2件)

 プログラマの習慣にもよりますが、つけない方が望ましいでしょう。



 最後にカンマがあると、「最後のカンマのあとにもう1つ項目がある」という意味になります。
 実際、その行の最後の項目にデータが存在しない場合、行はカンマで終わります。
    • good
    • 0

通常はカンマで区切られた物が、個々のデータになりです。


そして、行末の改行がデータブロックの区切りです。
ファイル末の改行はデータ終了という意味では入れた方が良いのではないかと思います。

カンマとカンマの間が無い状態 ",,"は空白のデータになります。

最後のカンマは不要だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QEXCELからCSVにすると余計なカンマがつきます

こんにちは。

EXCELから固定テキストでデータの利用をするために
ファイルをCSVにしました(件数約1万)。

その後テキストエディタで確認すると
最初の数千件は
1,2,3,4,5(改行)
6,7,8,9,0
のように目的とした文字列になってくれているのですが
ある所から急に
1,2,3,4,5,(改行)
6,7,8,9,0,
と、お尻にカンマがついてしまいます。

固定長で利用したいので、このカンマは余計なのですが、
カンマがつくならつくで、すべてのレコードについていれば
構いません。
なお、何回か試しているのですが、そのつどカンマが
現れる場所が違います。
時には最初カンマなし、途中カンマあり、また途中から
カンマなしなどというファイルも作られます。

どちらかに統一できる方法をご存知の方はいらっしゃいます
でしょうか。
お知恵を拝借したく存じます。
よろしくお願い致します。

Aベストアンサー

》 固定テキストでデータの利用をするために
》 ファイルをCSVにしました

CSV にする目的が「固定テキストでデータの利用」というのが理解できません。
私なら PRN にします。此れはスペース区切りの固定長テキストデータになります。

ま、それはソレとして、範囲 A1:E1 に左から 1、2、…、5 と入力して、此れを下方にズズーッと1万行ドラッグ&ペーストしたものを CSV形式 で保存してみました。
しかしながら、仰るような「ある所から急にお尻にカンマ」が付くことはありませんでした。
ちなみに、テストしたのは Excel 2002 SP-3 です。

貴方も Excel のバージョンを明記すべきです。

Q【Excel】 csvの作成時、空白セルにもカンマ

こんにちは

A列のA10まで、に値が入ります。
B列は、B1=IF(A1="","",A1) として、B10までフィルしました。

A1からA5までに1、2、3、4、5と入力し、A6からA10は空白にします。
B1からB5までは、1、2、3、4、5が表示され、
B6からB10までは空白です。

このSheetを、csvで保存し、テキストで開きますと

1,1
2,2
3,3
4,4
5,5
,
,
,
,
,
,


となります。

この、6行から10行の「,」がないcsvを出力したいのですが、
元のSheetの式はどうしたらよいでしょうか。

Excel2007です。

宜しくお願いします。

Aベストアンサー

>この、6行から10行の「,」がないcsvを出力したいのですが、元のSheetの式はどうしたらよいでしょうか。
そんな都合の良い数式は見当たりません。

Excelのセルに数式を入力すると計算結果で""を代入すると何もない状態ではありません。
文字数が0の文字列としてデータが入りますのでA列が何もない場合(NUL)でもB列の位置を示すカンマ(,)が出力されます。

Qエクセル:セル内の文字列の最後の「,]を消したい。

エクセル:セル内の文字列の最後の「,]を消したい。

以下のように、数字(1桁または2桁)がカンマでわかれたデータがあります。
この文字列の中で、一番最後の「,」だけ消したいのですが、
何か良い方法はないでしょうか。


1,1,1,1, ⇒最後のカンマを消したい
1,2,3,4  ⇒カンマがないのでそのままでOK
1,1,2,3,4 
1,2,3,  
1,11,12,

Aベストアンサー

こんなんでもいいかも
=SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",",")
とか
=LEFT(A1,LEN(A1)-(RIGHT(A1,1)=","))

QExcel csv保存 列数が異なる場合に、余分にカンマをつけない(ヘッダとデータの列数を変える)

こんにちは

Excelにてcsv保存を行う際、
 A B C D
 E F
 G H
(スペースはセルが違うと思ってください)
このようなデータを保存すると、
 A,B,C,D
 E,F,,
 G,H,,
の状態でファイルが出来上がりますが、
下のように2,3行目の後半のカンマがない状態で保存する簡単な方法はないでしょうか?
 A,B,C,D
 E,F
 G,H
同じフォーマットで、もっと行数の多いファイルを大量に扱うのに、
データ量削減のため、不要な部分はできるだけ減らしたい。

以下処置は可能ですが、保存方法やその他工夫でできないか教えてください。
① マクロで一行づつ、テキストファイルに書き込む。
② ヘッダーを除く部分でcsvファイルを作成し、後からヘッダー部分だけマクロから書き込む。
  (一連の作業はマクロで実施)

保存時のオプションで指定できればベストです。

よろしくお願いいたします。

Aベストアンサー

こんにちは。
#2の回答者です。

>ものによりますが1.3倍ほどになるのでできれば、、、といったところですね。
>ヘッダーが6列、データが3列の2000~5000、一日に3000ファイルほど吐き出しています。

私が想像していたのは、巨大なCSVファイルを考えていました。しかし、まさか、数で来るとは思いませんでしたね。

一日に3000ファイルほど? →1.3倍 ->[ファイルサイズの問題に発展]
もちろん、SHIFT-JISですよね。

カンマだけの問題ではなさそうな気がします。
CSVファイル生成には、問題は発生していないとしても、処理は、CSV生成時にということになるでしょうね。それも、完全自動化しなければ、3,000ファイルなどの処理ができるはずもありません。

とりあえず、最初の第一案から、マクロを提示します。

ツールを使う方法は、どうしても一括処理ということを考えます。しかし、何が問題かというと、ファイル名の決定方法と、タイム・スタンプの問題があります。それを変更しないようにするのではないかと思うと、また別なテクニックが必要になります。

以下は、A1からデータがあることを想定したマクロです。
'//
Sub MakingCSV()
  Dim LastRow  As Long
  Dim LastCol As Long
  Dim Rng As Range
  Dim buf As String
  Dim fNo As Integer
  Dim fn As String
  Dim i As Long, j As Long
  
  fn = ThisWorkbook.Path & "\Test1.csv"  'ファイル名
  fNo = FreeFile()
  Set Rng = ActiveSheet.Range("A1").CurrentRegion
  LastRow = Rng.Cells(Rng.Cells.Count).Row
  Open fn For Output As #fNo
  For i = 1 To LastRow
    LastCol = Rng.Cells(i, Columns.Count).End(xlToLeft).Column
    For j = 1 To LastCol
       buf = buf & "," & Rng.Cells(i, j).Text
       DoEvents
    Next j
     Print #fNo, Mid$(buf, 2)
     buf = ""
  Next i
  Close #fNo
  MsgBox "終了", vbInformation
 End Sub

こんにちは。
#2の回答者です。

>ものによりますが1.3倍ほどになるのでできれば、、、といったところですね。
>ヘッダーが6列、データが3列の2000~5000、一日に3000ファイルほど吐き出しています。

私が想像していたのは、巨大なCSVファイルを考えていました。しかし、まさか、数で来るとは思いませんでしたね。

一日に3000ファイルほど? →1.3倍 ->[ファイルサイズの問題に発展]
もちろん、SHIFT-JISですよね。

カンマだけの問題ではなさそうな気がします。
CSVファイル生成には、問題は発生していない...続きを読む

Q最終行の改行について

CSVで出力しようとしてるのですが、
write #1,i;j
などのように書くと、最終行の最後に改行が入ってしまいます。
これを解消する方法はないでしょうか。

よろしくおねがいします。

Aベストアンサー

Open "FileName.csv" For Output As #FileNo
ではなく
Open "FileName.csv" For Binary As #FileNo
で開いて、
For i = 0 To n
  Write #FileNo, a(i); b(i)
Next i
の代わりに
For i = 0 To n
  If i <> n Then
    Put #FileNo, , a(i) & "," & b(i) & "," & vbCrLf
  Else
    Put #FileNo, , a(i) & "," & b(i)
  End If
Next i
のようにするしかないと思います。

QCSVファイルの中で、「 , 」カンマを使いたい

「 , 」で区切られたCSVファイルの中で、「 , 」カンマを使いたいのですが、可能でしょうか?

具体的には「これは1,500円でした。」というように、CSVファイルに収められた文章内で出てくる半角の数字(お金)の区切りに使いたいのです。
全角では代用したくないのですが、CSVファイルでデータを受け渡しする際に、困っています。

例えば、特殊文字などで対応可能でしょうか?

Aベストアンサー

受け渡しに使うと言うことは相手方のアプリケーションのことも考えなければいけないのですが・・・とりあえず対応が簡単そうな方法を。

1.各セルを""で囲む。(もちろんデータにダブルクォートがある場合はカンマと同様に困ります。
2.カンマで区切らずにタブで区切る。(比較的使われない文字ですが、やはりデータ中にタブがあるとカンマと同様です)

難しいけれど完璧に対応するためには、データ中の区切り文字は特殊な文字列に変更し、受け取り側のアプリケーションではその特殊な文字列をデータ中の区切り文字として扱うという方法が使われます。
例えば、データ中のカンマは\,にするとか。

データ作成側、受け取り側でそれぞれどこまで対応できるのか分かるともっと簡単かつ具体的な方法を回答できるかも知れません。

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

Q別ファイルのfunctionの読み込み方

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために私が最初に書いたhtmlの文です(もちろん実行できませんでした)
------------------------------------
<html>
<script language="javascript" src="hello.js">
aisatsu(){
document.write(aa);
}
</script></html>
------------------------------------

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために...続きを読む

Aベストアンサー

function内で「var」をつけて変数を宣言するとfunction外からその変数の内容を取得することができなくなります。(returnで参照することはできます。)
なので変数の内容を取得する場合は「hello.js」の内容を

function aisatsu(){
var aa="hello";
return aa;
}

このように修正し、

<script language="javascript" src="hello.js"></script>
<script language="javascript">
var data=aisatsu();//「aisatsu()」関数の「aa」変数内のデータを引っ張り出す(return aa;)
document.write(data);//書いたり
alert(data);//アラートしたり
window.status=data;//ステータスバーに表示したり・・
</script>

Qエクセル→CSVにした時、スペースの数が違う

あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)、カンマで区切った後に通し番号が入ります。
しかし、一部の人にはスペースがはいらずに、名前にカンマと通し番号が続いて表示されます。
<メモ帳で作成したCSVファイルを開いた時の例>
ヤマダ○タロウ○○○○○○○○○○○○○,1,…
スズキ○ハナコ○○○○○○○○○○○○○,2,…
タカハシ○イチロウ○○○○○○○○○○○,3,…
タナカ○アイ○○○○○○○○○○○○○○,4,…
キムラ○ジロウ,5,…
サトウ○シヨウコ○○○○○○○○○○○○,6,…
※○はスペース

この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?
使うソフトの仕様通りにCSVを作成しているのに、ソフトにデータをうまく取り込めないので、こういったところに問題があるのかと考えています。

ご回答よろしくお願いします。

あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)...続きを読む

Aベストアンサー

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか

CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。

元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。

元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。

たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。

フィールドの幅が固定されたテキストファイルを読み込んでエクセルのファイルを作ると、「文字列型」になっているセルのデータは「末尾にスペースが付いたまま」セルに取り込まれます。

一方「後から行追加して、セルに手入力したデータ」には、末尾にはスペースは付きません。

そうなると、エクセルのファイルの名前が入力された列のセルには

ヤマダ○タロウ○○○○○○○○○○○○○
スズキ○ハナコ○○○○○○○○○○○○○
タカハシ○イチロウ○○○○○○○○○○○
タナカ○アイ○○○○○○○○○○○○○○
キムラ○ジロウ
サトウ○シヨウコ○○○○○○○○○○○○

と言うように、末尾にスペースがある物と、末尾にスペースが無い物が混在する事になります。

それをそのままCSV出力すれば、質問文に書かれた状態のCSVファイルが出来上がって当然です。

元のエクセルのファイルを開いて、すべてのセルを選択状態(反転状態)にしてから、「書式」→「セル」→「フォント」タブ→「下線」から「下線」を選ぶ→「OK」ボタン、と操作してみて下さい。

添付画像は、データの末尾にスペースが付いている物と、データの末尾にスペースが無い物が混在しているエクセルの画像です。

画像左側では、末尾にスペースが付いているセルがどれなのか、見ただけでは判りません。

画像右側のように「下線付き」にすると、末尾にスペースが付いているセルが一目瞭然です。

下線を付けると「見えないスペースにも下線が付く」ので「aaaa」「bbbb」「dddd」のセルで文字の右に下線が延びてて、末尾にスペースが付いていると判ります。「ccc」は下線が伸びてないので、末尾にスペースが無いのが判ります。

この問題を解決するには、以下の2つの方法があります。

・余計なスペースを削りたい場合

TRIM関数を使って、末尾のスペースを取り除いたデータを生成し、生成したセルをコピーして「形式を指定して貼り付け→値のみ」で貼り付けて、末尾のスペースを取り除いた後、CSV出力する

・すべてスペース付きにして固定長にしたい場合

エクセルのファイルをテキストファイルに出力する際、CSV形式を選ばず、PRN形式を選んで「カンマ無しの固定長のテキストファイル」に出力する

カンマ区切りでスペース無しの不定長のテキストファイルが欲しければ前者を、カンマ無しでスペース付きの固定長のテキストファイルが欲しければ後者の方法を使って下さい。

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか

CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。

元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。

元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。

たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。

フィールドの...続きを読む

QCSV形式にすると出てくる空白を消したいです。

エクセル形式で、表を作ってCSV形式で保存するのですが、
CSV形式で保存したデータをメモ帳(テキスト形式)で開くと、
エクセル・CSV形式の時には表示されていなかった空白(半角スペース)が出来てしまっています。。。


業務上必要なデータで、項目には半角英数13ケタの数字しか入力してはいけないのですが、
その空白が出来てしまってしまうので、エラー扱いにされてしまいます。

どのようにすればテキスト形式で表示したときにこの空白が生れないように出来るのでしょうか?
宜しくお願い致します。

Aベストアンサー

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにして、種類の一番上のサンプルを見てください。
[0_ ] ←かっこ内の部分を確認していただくとおわかりになるかと思います。
0は、数字ですが、その後ろにアンダーバーと半角スペースが入ってしまっています。
[0]だけを残し、アンダーバーとスペースを削除してください。
その後にCSV形式で、出力してあげればスペースは、消えています。
但し、再度エクセルからそのCSVを読込すると書式が、標準なのでスペースも入ってしまいますし、ケースによっては、指数表示(3.21099E12)にようになってしまうかもしれませんが、その場合は、書式の設定で直してください。
※添付の画像で赤の楕円で囲んだ部分です。

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにし...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング