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

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

  • by Anonymous Coward

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

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

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

    • by Anonymous Coward

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

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

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

        • by Anonymous Coward

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

          • by Anonymous Coward

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

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

              例えばコードとして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の場合は指定できません。

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...