• 締切済み

Excelとcsvの改行について

初めまして。 新規でネットショップをオープンすべく準備中の、HTML初心者です。 実店舗の経験をネットで生かそうと思い、分からないことが出てくる度に調べながらオープン準備を進め、何とか残るは商品データのUPのみという所まできました。 ショップサーブからダウンロードした一括UP用のcsvファイルがExcelで開いたので何の疑問も持たなかったのですが、保存時にエラーがでたため調べたところ、Excelの改行はcsvには反映されないことを知りました。 さらに調べて、改行したい部分に\r\n(Macは\n)もしくは、"文章"と入力すると改行が反映される。というところまで辿り着いたのですが、下記の内容で詰まっております。 (1)既に200近い商品データをExcelに入力済みです。入力済データの改行部分を、コマンド(コード?)に一括変換する方法はあるのでしょうか。 (2)例えば、文章の上下間を3行空ける(改行する)場合、入力は文章\r\n\r\n\r\n文章(Macは文章\n\n\n文章)もしくは、"文章"",",""文章"で良いのでしょうか。 (3)試しにネット上で入力した商品データ(csvファイル)をダウンロードして開くとExcelが起動し、ネット上で改行した部分が幾つものスペースで表示されます。データを壊さずにスペースを短くする方法はあるのでしょうか。 お手数ではございますが、宜しくお願い致します。

  • HTML
  • 回答数5
  • ありがとう数6

みんなの回答

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.5

RFC4180をきちんと読めばわかるんですが RFC4180はCSVの仕様を規定しているわけではなく RFC4180が書かれたときに既に存在していた様々なCSVの仕様から最大公約数の内容が書かれているだけです。 http://www.7key.jp/rfc/rfc4180.html#csv_format からの抜粋 >CSV形式の仕様と実装は多岐に渡る(7.2.参考文献[4]、[5]、[6]、[7])が、多様な実装が解釈し得るCSV形式の公式な仕様はない。本節で、殆どの実装が解釈可能なCSV形式の書式を述べる。 カテゴリーもInformationalですから標準規格を規定したものではありませんし。 ゆえに#2の方がいわれているようにCSVの仕様自体がアプリケーション依存ですので、 サーバー側のプログラムがExcelの出力するCSVに対応していないのでしたら対応させるか、 別の手段でデータのやりとりをすることになるかと思います。

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

#3 です。 説明に間違いがあったので訂正します。失礼しました。 × CSVでアプリケーション依存なのは「ASCII文字(U+0000~U+00FF 以外)を除く文字」だけです。 ○ CSVでアプリケーション依存なのは「ASCII文字(U+0000~U+00FF)を除く文字」だけです。

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

#1 です。念のため、補足しておきます。 CSVでアプリケーション依存なのは「ASCII文字(U+0000~U+00FF 以外)を除く文字」だけです。 大雑把には日本語の扱いですね。 RFC4180ではABNF形式でテキストデータを「TEXTDATA = %x20-21 / %x23-2B / %x2D-7E」と定義していますが、日本語に対応するためにはこれはメタキャラクタを除く文字と置き換えれば良いので、日本語対応はさして難しくありません。 http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF http://www.7key.jp/rfc/rfc4180.html#csv_format RFC4180 では改行、ダブルコーテーション、カンマの扱いについてしっかりと規定されており、MS Excel もそれに準拠しているはずです。 ダブルコーテーションや改行の使いが RFC4180 非準拠であるなら、それは正式な CSV ではないといえます。 実際、この辺りの仕様に準拠してないフォーマットをCSVとして公開している実装が数多くありますが、それをCSVと呼ぶのには抵抗があります。 私にいわせれば、それは「CSVもどき」であってCSVではないですね。 # Re: momon6911 さん

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

それだけの情報では、原因が分からないので解決方法はありません。 CSVファイルは、規格もありますが現状は完全にアプリケーション依存です。例えばexcelで入出力するCSVは、 ・,で区切った部分がスペースを含めて値である ・値にコンマ,、ダブルクウォーテーションマーク"、(改行コード)が含まれる場合は、  値全体を""で囲む ・値に含まれるダブルクウォーテーションマークは "" とする。 のルールになっているはずです。 >Excelの改行はcsvには反映されないことを知りました。  ではなく 建物,"2011 01 05"," 入居済み""田中"",すみ  のようになっているはずです。  perlでしたら、mapを使って処理するのが早いです。  サーバー上のCSVファイルは、excelの形式にして保存、利用するように変更しましょう。

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

まず、csvは改行を扱えます。 あなたが作成したExcelファイルをMS Excelで開き、[名前をつけて保存] でCSV形式で保存し、再び MS Excel で開けば、改行が反映されることがわかるはずです。 ネットショップ上で改行が反映されないのはネットショップ側のプログラムでcsvを正しく認識できていない、つまりはバグだと思われます。 > 改行したい部分に\r\n(Macは\n)もしくは、"文章"と入力すると改行が反映される csvは \r\n をただの文字列として扱うので、これは正式なcsvではありません。 (csvでは改行コード(CRLF)以外に「ダブルクオーテーション(")」「カンマ(,)」が意味のある文字として働きますが、こちらは大丈夫なのでしょうか) Excelで開けるcsvとして相互互換性を持たせるなら、Excel側でごにょごにょするよりもネットショップのプログラム側で正しくcsvを認識できることが重要です。 CSVは RFC4180 で規定されているので RFC4180 準拠になるようプログラム修正を試みてください。 RFC4180 では日本語を正しく認識しませんが、そこは適宜読み替える必要があります。 http://www.7key.jp/rfc/rfc4180.html # Re: momon6911さん

関連するQ&A

  • [PHP]csvファイルを生成するときのマックの改行対応の方法について

    [PHP]csvファイルを生成するときのマックの改行対応の方法について 現在、phpでcsvファイルを出力しているのですが、Windowsだと旨く改行が反映されるのですが、Macだと旨く行きません。。。 改行は「\n」を使っていましたが、マックの改行コードが「\r」との事なので、「\n\r」としたのですが、旨く反映されないようです。。。 途中は省きますが $csvData .= "A列" . "," . "B列" . "\n\r"; $csvData .= "a" . "," . "b" . "\n\r"; $csvData .= "c" . "," . "d" . "\n\r"; として、マックでオープンオフィスを使用して開くと、 A列,B列a,bc,d と1行で出て来てしまします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • csvファイル改行コードの置換について

    お世話になります。 csvファイルで作成したデータを出力表示させるスクリプトで csvファイル内の改行コード(セル内)以後のデータが出力できません。 下記の置換で改行コード以後のデータが表示されません。 $abc =~ s/\r\n//g; $abc =~ s/\n//g; $abc =~ s/\r//g; csvファイル内の改行の数が多く、1行のデータが改行の為に、2行になったりしているので出力前に置換し表示させる方法です。 csvファイル作成時につく""は正常に置換しています。 似たような質問もあったのですが、少し違うようですので質問いたしました。 何卒、ご教授お願いいたします。

    • ベストアンサー
    • Perl
  • 改行コードについて

    ファイルの文字コードはutf-8で改行コードはLFです。 メール送信時にメール文面の一部にいれるテキストを mysqlに保存しています。 メール送信のソース内でデータを読み込み送信までは できているのですが改行コードを変換したく $msg = str_replace("\r\n", "\n", $msg); とやってみましたが改行されず普通に\r\nと表示され うまく変換ができません。 いろいろと試した結果以下のソースでは正常に改行されました。 $msg = str_replace("\\r\\n", "\n", $msg); メール送信前にデバッグでしてみましたが読み込むデータの 改行部分は\r\nとなっているのは確認済みです。 \を多くつければ改行はできるようなのですがこれは仕様なの でしょうか? またmysqlに入れてあるデータはフォームから入力し登録 しているのですがLFの改行コードは\nなので登録時に\r\nではなく \nと変換してからmysqlに登録するのがいいものなのでしょうか?

    • 締切済み
    • PHP
  • EXCELで指定した改行タグを入れていく

    A列に1セルごとに、改行のある文章があります。 ーーー 例:A1 さいたさいたチューリップの花が ならんだならんだ 赤白黄色 どの花みてもきれいだな ーーー この改行のある文章を、B1に『指定したタグ』を入れて記入させたいです。 ーーー 例:A1→B1 さいたさいたチューリップの花が\r\n\r\nならんだならんだ\r\n赤白黄色\r\n\r\nどの花みてもきれいだな ーーー ※なぜ、\r\nかというと、 botbirdというサイトで、TwitterのBOTを作るためです。 このように改行のあるA1の文章を、 B1で指定したタグを入れて記入させるには、どのような式でできますか? EXCEL2016です。 よろしくお願いいたします。

  • javaでcsvファイル読込時の改行について

    javaでcsvファイルを読込・データ登録処理を作成しているのですが、 現在はjavaのreadLine()を使用して読込んでいます。 既存のreadLine()では\rまたは\n、および\r\nにて改行とみなしているようですが、 これを\r\nの場合のみ改行としたいと思っています。 どなたか良い方法をご存知でしたら教えてください。 初心者の為、説明が分かり難かったら申し訳ありません。 よろしくお願いします。

  • CSVファイルの改行

    似たような質問はあったのですが、解決できませんでした。 複数のテーブル(mysql)から抽出したデータをCSVファイルにして ダウンロードという動きを作りましたが、Excelでは改行されているのに メモ帳だと改行されません。 配列の最後に"\r\n"を挿入してみたところ、メモ帳での改行はできたのですが、 Excelに必要ない改行が入ってしまいます。(あたりまえですよね) 改行コードの入れるタイミングと方法を教えて頂けますか。 select文 while($rows = @mysql_fetch_array($result)){ $list[$i] = array ($aaa,$bbb,$ccc); $i++; } $filename = 'ファイル名'; $fp = fopen($filename.'.csv', 'w'); foreach ($list as $line) { fputcsv( $fp , $line ); } fclose($fp); ZIP圧縮処理後ダウンロード 環境:php5,mysql5

    • 締切済み
    • PHP
  • メールのテキストで多く改行が入ってしまう?

    現在メール送信のフォームを作っているのですが、 \r\nの扱いで困ったので書き込みしました。 <textarea>で取得したテキストを メールに出力するようにしていたのですが、 <入力したデータ> てすとです てすとです <メールで出力されたデータ> てすとです てすとです というようになってしまいます。 [\n\r]悪いのかと思い、\nに置換してみたのですが 同じような現象になってしまいました。 \nを取り除くような処理にすると二重改行をはされません。 \rだけ残すって言うのはちょっとまずいですよね・・・。 一体どうすれば良いのでしょうか?

    • ベストアンサー
    • CGI
  • csvデータをレコード毎に改行させたい

    タブ区切りのcsvファイルを書き出したのですが、レコード毎に改行されずに1行の長いデータになってしまいました。 この書き出し方法そのものを変更することはできません。 (iTunes8.1での「プレイリスト書き出し」です) これを27項目ごとに改行させて、Excelなどの表計算ソフトで1行が1レコードとなるようにデータを加工したいのですが、どうすればいいのでしょうか? Macユーザーなので、できればOpenOfficeなどでできる方法で教えていただけると助かります。

  • CSVをExcel2007に取り込む方法について

    CSVファイルをエクセルに取り込みたいと思います。 CSVファイルはカンマでデータを区切っています。 ただ、カンマで区切られたデータの中に、改行コードが含まれている場合があります。 エクセルで、このCSVデータを読み込む場合、セルの中で2行目以降はとぎれてしまいます。 そこで、下記のサイトで、「引用符で囲まれた改行を無視」というエクセルの 機能があることを知りましたが、Excel2007にはこの機能はないのでしょうか? https://tsukaeru-excel.com/line-feed-code-csv-powerquery 最近のバージョンのExcelには標準でそなわっているようです。

  • csvファイルの改行について

    仕事でWinの方からデータ作りを頼まれました。csvファイルで見本となるデータを頂き、エクセルでそれを使って作ってほしいということでした。私はMac9.1です。見本のデータを開いてみるとセルの中で改行してありましたが、こちらではその改行してあるところに記号が入っていました。その記号はキーボード上ではフォアードデリートのマークでした。(右側がとがった四角の中に×が入っているマーク)しかし、キーボード上ではそれがありますが、デリートの機能なので、もちろん入力することはできません。なんだろうと思いながら、こちらでデータを作る際、セル内での改行はcommand+option+retumを使い、改行しました。そしてWinの方にメールで添付し送信したところ、改行されていない…と言われてしまいました。私もあまりエクセルがわかっておらず、しかし、こちらの画面上では改行されているし…どうしたらよいのかわかりません。Winの方に聞いてみると、Winで作られた見本のデータにはそんなマークも入ってなく、改行されているようです。回答をよろしくお願い致します。私はエクセル98です。

専門家に質問してみよう