パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Excelのデータってありますか?」記事へのコメント

  • by Anonymous Coward

    神 Excelと違って、楽勝だね。

    "❶","12,000㌕","32.1㌫"
    Ⅱ,1万kg,46

    全部にダブルクォート付きくらいなら、除去するだけだから楽勝だが。
    下手にデータの方にもダブルクォートがある場合ってどうなるんだろ。

    • by Anonymous Coward on 2020年11月11日 0時39分 (#3921840)

      ダブルクォートの出力方法がそもそも複数ある。
      ダブルクォートが2個並ぶ形式(普通はこの形式)でエスケープ。
      バックスラッシュ(円記号)の後ろにダブルクォートでエスケープ。
      ダブルクォートを単なる通常文字として扱う(この場合フィールド内に区切り文字や改行文字は入力不能)。
      もしかすると、ダブルクォートで括った上で区切り文字に隣接しない場合はダブルクォート一文字、
      区切り文字に隣接する場合はダブルクォートを一文字増やすって実装もあり得るだろうか?

      二重ダブルクォートだけサポートしとけば大概は大丈夫だろうけど、
      もし方言含めてパースするなら当該形式で矛盾が起きない形式のうち
      最も一般的な方式であると推定が行えてから読み込みだねぇ……
      区切り文字が破壊されればフィールド数の不揃いで検知できるが、
      全部不揃いなパターンや破壊が起きないパターンだと確定困難。

      親コメント
      • by ikotom (20155) on 2020年11月12日 20時42分 (#3923144)

        > ダブルクォートの出力方法がそもそも複数ある

        他の方も言及されてますが
        RFC 4180 というデファクトスタンダードがあります。
        それによればエスケープ方法は二重引用符を重ねる形式:

        > "aaa","b""bb","ccc"

        の1パターンのみ許容されるということになりますね。
        つまり「RFC 準拠のCSVでお願いします!」と言っとけばOKってことです。

        http://www.kasai.fm/wiki/rfc4180jp [kasai.fm]

        親コメント
        • by st1100 (45287) on 2020年11月14日 0時11分 (#3923894)

          RFCで定義されて、もう15年もたつのか。

          親コメント
          • by Anonymous Coward

            RFCをデファクトと呼ぶのはどうなのか

            • by Anonymous Coward

              RFCがイコールでデファクトスタンダードなのではないですよ。

              RFCで定義されたことによりデファクトになったものもありますし
              デファクトだったのでRFCに定義されるようになったものもあります。
              そしてもちろん、RFCで定義されているにも関わらず全くスタンダードに
              なっていないものもあります。

              RFCという総体はデファクトかもしれないしそうでないかもしれない、
              あやふやなものです。
              RFC-XXX という具体的な数字つきの個別の話でデファクトかどうかを
              語っている人と、総体で捉えている人とがいるようなので
              そこは誤解の元ですから注意したいですね。

        • by Anonymous Coward

          RFCになってるのにデファクトスタンダードとはこれいかに。

      • by nemui4 (20313) on 2020年11月11日 8時16分 (#3921906) 日記

        Excelじゃないですが、とある共有のデータベースで備考欄に半角カンマを入れるユーザがいたらしくて。
        担当者がCSVに落として一括処理しようとしたら、失敗して困ってたのを思い出した。

        親コメント
        • by Anonymous Coward on 2020年11月12日 15時28分 (#3922919)

          まともなCSVはそういうのはちゃんとダブルクォートで囲むなりする。

          親コメント
        • by Anonymous Coward

          郵便番号データも、かなり変則的だってことで有名でしたね。
          なにしろ潜在的なユーザー数が膨大なのに、設計がヒドくて涙目。
          「ないよりはまし」だけどさあ。

          https://srad.jp/comment/2123564 [srad.jp]
          https://qiita.com/nanasess/items/0f0aeaa1f72f599b9142 [qiita.com]

          • by abies (39185) on 2020年11月12日 22時01分 (#3923190)

            https://qiita.com/nanasess/items/0f0aeaa1f72f599b9142 [qiita.com]

            郵便番号が7桁になったとき、全国の郵便番号一覧が配られましたが、飛び地等を表現できないからか京都市内だけは地図付きでした。通常の日本の住所が街区を基準にしているのに対して、京都市内は道路を基準にしています。にもかかわらず、住所表記は日本標準の街区基準にしようとしているためで、郵便番号を作った人の苦労が偲ばれます。
            あと、「618-0000 大阪府三島郡島本町, 京都府乙訓郡大山崎町」の都道府県が特定できない件ですが、現地に行くと一緒で良いのではないかと思えてきます。電話番号も両方とも、京都市と同じ075ですし・・。

            郵便番号が悪いのではなく、行政区分や住所表記が悪いと思います。まあ、お役所のせいではあるのですが。

            親コメント
          • by nemui4 (20313) on 2020年11月12日 15時31分 (#3922925) 日記

            >お役所のせいだといえば納得する顧客が少なくないんですよね。

            国民みんな諦めてますね。

            親コメント
        • by Anonymous Coward

          改行コード入ってる場合もありますね。
          あれも苦労する・・・

          • by Anonymous Coward

            「Excelで保存したCSVファイル」という仕様であれば、ロードは簡単なんだけどな。
            オレオレCSVで整合性考えてないのは解析しろと言われても困る。

            • by Anonymous Coward on 2020年11月12日 15時38分 (#3922931)

              >「Excelで保存したCSVファイル」という仕様であれば、ロードは簡単なんだけどな。
              ?えっ

              EXCELで保存したCSVファイルはEXCEL自身ですら同じ形でロードできないのに?
              01 2-1 をCSV保存-> 01,2-1
              CSVとしてEXCEL読込み-> 1 2月1日

              何処が簡単なんだか教えてくれ、マジで。

              親コメント
              • by Anonymous Coward

                それは「セルの内容が解析できる書式だった場合はそのデータ型にキャストして元データを破棄する」というゴミのような仕様の問題だろ

              • by Anonymous Coward

                つまり、CSVを破壊するExcelがゴミ。

              • by Anonymous Coward

                だから、
                拡張子を.txtとかに変更して
                (1) ファイルの「開く」
                または
                (2) データの「外部データの取り込み」→テキストファイル」
                ででテキストウィザードを開く必要がある、というのが「ロードは簡単」ではないだろ、って話だろ?噛みつくとこ間違えてんぞ?

            • by Anonymous Coward

              例えばコードとしてEXCEL上で文字列として「0010」を入力しCSVファイルとして吐き出した。
              そのCSVファイルをEXCELで読み込むと数値の10となってしまう。

              • by nemui4 (20313) on 2020年11月12日 15時30分 (#3922921) 日記

                例えばコードとしてEXCEL上で文字列として「0010」を入力しCSVファイルとして吐き出した。
                そのCSVファイルをEXCELで読み込むと数値の10となってしまう。

                これありますね、数値じゃなくて文字列として扱ってれば良いんでしょうけど。
                データを出してくる方はそこまで気にしてないのが多いし。

                親コメント
              • by Anonymous Coward

                なのでこういうのはVBAで元の文字列のまま取込できるようにしてます

              • by Anonymous Coward

                読み込むときに指定できませんでしたっけ。

              • by Anonymous Coward

                そりゃそうだよね、って感じなんだが。
                ExcelのCSV出力仕様は確定しているんだから、どう入力させてどう受け取るかは仕様化できるだろ、と。
                改行コード入ると解析不能になるなんてことは無いって話。

              • by Anonymous Coward

                タブ区切りなら、テキストエディタで開いてコピーペースト→セルの書式を文字列→もう一回ペースト だけで割と楽にできるんだけど。
                カンマ区切りだと先にダミーで文字列分割しておくか、テキストエディタ上でカンマをタブに置換しておくか(カンマ入りデータがあると除外が面倒)する必要があって
                なんでわざわざこんなことしてるんだ…という気分になる。

              • by Anonymous Coward

                セルを文字列指定していても関係ないです。
                EXCELは全てのセルを2重引用符つけて出力しないですし、仮に2重引用符で囲まれている項目でも、中
                身が数値のみならばファイル拡張子が.CSVの場合、読み込み時に無視して頭ゼロを削除しやがります。

              • by Anonymous Coward

                何度も繰り返すのだったらマクロ化するけど一度だけとかだったら拡張子をTXTに変えてテキストファイルウィザード使ったりするかな

              • by Anonymous Coward

                拡張子がCVSだとテキストファイルウィザードも開かれずにEXCELが勝手に変換してしまう。
                もっとも外部データの取り込みからCSVファイルを読み込めばテキストファイルウィザードが開かれてデータ型を指定できる。
                ただしそうするとCSVファイルを開くときに考慮してくれる""内の,(カンマ)や改行を考慮してくれなくなる。

              • by Anonymous Coward

                ごめん
                × CVS
                ○ CSV

              • by Anonymous Coward

                「データはCVS(上に)にあるから。」
                「データはCSV(型式で)であるのか。」
                も昔はありそうな誤解だった。

                それがわかってるから、非エンジニアには「CVS上にある」なんて
                言い方は絶対にしなかっただけで。
                そういう意味ではエンジニア同士の方がむしろ危険だったな。

              • by Anonymous Coward

                できますよ。
                その列の中身が全部キチンと同じ型であればね。
                エクスポート時にやらかしてたら目も当てられない(しかも何万行のひとつふたつとか)。

              • by Anonymous Coward

                そこにCustomerSerViceやConVenienceStoreが入ってきた日にゃあ……

              • by Anonymous Coward

                同じソフトで保存しておいて欠落を起こすのは、流石にその仕様に問題があるでしょ。

              • by Anonymous Coward

                拡張子がCSVの場合は指定できません。

            • by Anonymous Coward

              そしてそれをExcelで開いて、先頭の0の欠落を起こすところまでがセット。

            • by Anonymous Coward

              csvなんて大抵何かのジャーナル出力でしかないだろ。
              それをExcelを前提として上手く読めないと「オレオレcsv」とか表現する方に驚きが。

              どうしてもってのならマクロで読めば良いだろうに。

          • by Anonymous Coward

            Mac の Excel と Windows の Excel でセル内改行のコード違うの、罠ですよね。

        • by Anonymous Coward

          Excelじゃないですが、とある共有のデータベースで備考欄に半角カンマを入れるユーザがいたらしくて。
          担当者がCSVに落として一括処理しようとしたら、失敗して困ってたのを思い出した。

          更に下記のようなCSVもあったり

          1,2,=A1+B1

          # 開くとC1は計算後の3と表示されます

        • by Anonymous Coward

          普通タブ区切りのCSVにするでしょ

          • by Anonymous Coward

            それはTSV(Tab-Separated Values)って言うんじゃないの。

            • by Anonymous Coward

              違う。その呼び方トラブルの元だからマジで止めた方がいいよ。
              CSVはcharacter-separated values、何区切りのCSVか明記するのが推奨される書き方。

              これだってTSV
              あああ🍅いいい🍅うう
              11🍅22🍅33

              • by Anonymous Coward

                いやいやいや、念のためググったけど多くがComma-Separated Valuesで解説されてるじゃないか。

              • by Anonymous Coward

                DSV(delimiter-separated values)と間違えてません?

              • by Anonymous Coward

                IBMさんチッス

              • by Anonymous Coward

                そうとも呼ぶけど、CSVはカンマ区切り限定ではない。多いのが;区切りのCSVとTAB区切りのCSV。

              • by Anonymous Coward on 2020年11月13日 12時45分 (#3923469)

                マジレスすると

                comma-separated values(CSV)
                colon-separated values(CSV)
                space-separated values(SSV)
                slash-separated values(SSV)
                semicolon-separated values(SSV)
                tab-separated values(TSV)
                tomato-separated values(TSV)
                tamakin-separated values(TSV)
                vertical bar-separated values(VSV)

                と重複してしまうから総称して
                character-separated values(CSV)、区切り文字は〇〇
                と表現するようになった。

                親コメント
          • by Anonymous Coward

            それは TSV: Tab-Separated Values

          • by Anonymous Coward

            それってTSVでは...

        • by Anonymous Coward

          エクセルから産まれたというRFC4180は評価できる。
          #でも嫌われる模様

          • by Anonymous Coward

            でもExcelはRFC 4180準拠じゃないんだよなぁ。

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

処理中...