- 締切済み
CSVファイルの時刻の形式について
エクセルのデータを別のソフトへアップロードするのですが、 その際にCSVファイルにします。 そのデータの中に、時刻のデータもあり時間数の合計だったりするので 24時間以上の表記になるため、セルの書式設定で そのまま表示がされるように設定がデータを出力した時に されています。 ですが、そのデータ出力をしたCSVファイルを開いて 保存をすると24時間以上のデータには、必ず「秒」の表記が されるようになります。 「秒」の表記がされたままのデータをアップロードすると、時間の表記が おかしくなる事が分かりました。 アップロードする前にCSVファイルで加工する事があるのでどうしても 保存の作業をする事になるのですが、「秒」の表記がされないように 何か工夫できる事がありましたら教えてもらえればと思います。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>「秒」の表記がされたままのデータをアップロードすると、時間の表記がおかしくなる事が分かりました。 それは勘違いでしょう。 CSV形式のファイルはフィールド(列)をカンマ(,)で区切った文字列です。 出力(保存)したCSVファイルをメモ帳で開けば確認できます。 CSVファイルをExcelで直接開いたときは標準で組み込まれた表示形式を適用しますので時刻を表す値は自動的に"h:mm"または"[h]:mm:ss"のように指定されます。 時間の合計では24時間を超えることもあり、24時間以上のときは"[h]:mm:ss"が指定されます。 従って、秒の桁まで表示されても不思議ではありません。 CSVファイルを読み込む側のソフトの仕様によるものなのでCSV形式で保存する段階では対処方法が無いようです。 Excelで読み込む場合は外部データの取り込みを行う前に表示形式を"[h]:mm"に変更しておくと目的に合うと思います。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>書式設定をやり直して、「秒」が表示されないようにしても、 >保存をして、また開くと元に戻ってしまっているのです。 CSVは「書式は保存されない」ので、もし 12:30,24:30,26:30,50:30 となっているCSVファイルをEXCELで開き直すと、秒無しの書式が消えて 12:30,24:30:00,26:30:00,50:30:00 と言う状態になります。 秒無しの書式が消えたまま「上書き保存」をすれば、当然、秒が付いたまま保存されるので、CSVファイルの中身は 12:30,24:30:00,26:30:00,50:30:00 となって保存されます。 >何か他にいい方法がありましたらよろしくお願いします。 CSVファイルを生成する部分で、時刻データを「"」で括って、文字列としてCSVに出力するしかありません。 つまり 12:30,24:30,26:30,50:30 ではなく "12:30","24:30","26:30","50:30" と出力するしかありません。 こうすると、CSVファイルをEXCELで開き直して上書き保存しても、時刻データに秒は付きません。 但し「最終的にCSVを取り込む部分」を、つまり、別のソフトを「""で括られた文字列」を時刻として取り込めるように改造しなければいけません。 なお、当方は「CSVの出力結果をEXCELに読み込んで修正をしてから上書き保存する」と言う事そのものが「間違い」だと考えます。 途中で修正が必要なのであれば、エクセルのブックファイルなど書式が保存できる型式で出力して、書式を維持したままEXCELに読み込んで、書式を維持したまま修正を行って、修正が済んだ最終段階で最後にCSVにする、という処理にすべきです。最初にCSVで出力してはいけません。
お礼
色々な方法を教えていただいてありがとうございます。 最終的に、データをソフトに読み込ませる際にCSVでないといけないので CSV出力をしていたのですが、確かに出力する際にエクセル形式にして 最終的に、CSVに変更するという方法も試してみたい方法だなあと思いました。 今回は、他の項目の修正もありどうしてもいろいろな加工が必要な為 CSVの上書きを行って即データを読み込ませる方法で対処をしようと思います。 情報をいただきましてありがとうございました。
- Eureka_
- ベストアンサー率41% (5079/12273)
>書式設定をやり直して、 そうじゃなくて、そのcsvをワードパッドなりなんなりで編集して秒を削っちゃえば良いじゃないか、と…
お礼
何度も回答をいただいてありがとうございます。 確かにエクセルの仕様ではどうにもならない、という事でしたので 他の方の補足で記入した方法で処理をするようにしました。 とりあえずは、上記の方法で何とかクリアできそうです。 ありがとうございました。
文章の書き方から判断して、Excel初心者のようだから、ダラダラ説明を省きます。 結論から先に言えば、貴方が望む「何か工夫できる事」は存在しません。 CSV ファイルを読み込んだ後のワークシート上に表示されている時刻の範囲を次の“ユーザー定義”書式に設定することぐらい、です。 [h]:mm
補足
私の質問の内容がうまく伝わっていなかったようですね。 なかなか思うように説明が出来ないのがいけませんね。 今回は、セルの書式設定でユーザー定義で設定するという事は行なっております。 [h]:mm:ss を [h]:mm にすると表記がされなくなる事も把握をしております。 その後に保存をして、そのファイルをまた開くと元に戻ってしまっている (書式設定が変更されてしまっている)という事が言いたかったのです。 そしてその対処方法が何かあれば教えてほしい、 という部分が一番知りたかった事です。 こちらについては、別で確認をした所、エクセルの仕様のためどうにもならない という事でした。そのため、CSVで加工をした後に上書き保存のみをして、 その後にそのファイルを開かずにアップロードを行う事で、加工した書式のままで データが表示される、との事でした。 一応は、この方法で解決できそうです。 何はともあれ、ありがとうございました。
- Eureka_
- ベストアンサー率41% (5079/12273)
CSVを編集して「秒」を削除する、じゃダメなんです? 一括置換で一発じゃないかと思いますけれども。
補足
回答いただきましてありがとうございます。 書式設定をやり直して、「秒」が表示されないようにしても、 保存をして、また開くと元に戻ってしまっているのです。 何か他にいい方法がありましたらよろしくお願いします。
お礼
おっしゃる通り、出力をするソフトの方に確認をした所、 出力の時点では、そういう形式にはなっていないそうです。 出力後にファイルを開くとコメントの通り、指定されてしまい秒の桁が 表示されてしまうそうです。 今回は、CSV出力後の処理で何とかうまくできそうなやり方が 判明しましたので、そちらの方法を試していこうと思います。 コメントをいただきましてありがとうございました。