C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 時刻のCSVファイルへの書き込み


(過去ログ 119 を表示中)

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■69971 / inTopicNo.1)  時刻のCSVファイルへの書き込み
  
□投稿者/ 沙希 (1回)-(2014/02/15(Sat) 13:07:16)

分類:[VB.NET/VB2005 以降] 

「2014/2/15 12:12:45」などと現在の日時をCSV形式で書き込みしたいのですが、
保存されたCSVファイルをExcelで開くと、秒の部分が消えて「2014/2/15 12:12」としか表示されません。
しかしこれをメモ帳で開くと「2014/02/15 12:12:45」となってますので正確に書かれてるようです。
またExcelでもその部分をクリックすると数式バーには「2014/02/15 12:12:45」と表示されます。
これをExcelで普通に「2014/02/15 12:12:45」と表示するにはどのようにすれば良いのですか?
教えてください。

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fileName As String = "ABC.CSV"
        Dim Writer As New IO.StreamWriter(fileName, True, System.Text.Encoding.Default)
        For i = 0 To 5
            Writer.WriteLine(DateTime.Now)         
            System.Threading.Thread.Sleep(1000)    '1秒待ち
        Next i
        Writer.Close()
    End Sub
End Class

引用返信 編集キー/
■69972 / inTopicNo.2)  Re[1]: 時刻のCSVファイルへの書き込み
□投稿者/ WebSurfer (184回)-(2014/02/15(Sat) 13:17:15)
No69971 (沙希 さん) に返信
> しかしこれをメモ帳で開くと「2014/02/15 12:12:45」となってますので正確に書かれてるようです。
> またExcelでもその部分をクリックすると数式バーには「2014/02/15 12:12:45」と表示されます。
> これをExcelで普通に「2014/02/15 12:12:45」と表示するにはどのようにすれば良いのですか?

VB.NET のプログラムの問題ではなく、単純に Excel の表示の仕方の設定の問題ではないのですか?

ハズレだったら失礼しました。
引用返信 編集キー/
■69974 / inTopicNo.3)  Re[2]: 時刻のCSVファイルへの書き込み
□投稿者/ 沙希 (2回)-(2014/02/15(Sat) 20:50:51)
No69972 (WebSurfer さん) に返信
> VB.NET のプログラムの問題ではなく、単純に Excel の表示の仕方の設定の問題ではないのですか?
>
> ハズレだったら失礼しました。

ありがとうございます。

CSV形式ではないようにも思うのですが?

でも、私こそ違ってるかもしれません。
引用返信 編集キー/
■69975 / inTopicNo.4)  Re[3]: 時刻のCSVファイルへの書き込み
□投稿者/ オショウ (128回)-(2014/02/15(Sat) 23:06:12)
No69974 (沙希 さん) に返信

  日時欄の指定ですが・・・
  文字列として出力したいなら、ダブルクートを前後に入れる。
  ダブルクオートを入れないなら、あくまでエクセルを使って正しく
  表示させたいだけの場合、セル、もしくは列のセルの書式設定にて
  表示形式を日付等にする。もしくユーザー定義で自身の表示したい
  書式を定義して設定する。

以上。参考まで
引用返信 編集キー/
■69976 / inTopicNo.5)  Re[3]: 時刻のCSVファイルへの書き込み
□投稿者/ WebSurfer (185回)-(2014/02/15(Sat) 23:17:23)
No69974 (沙希 さん) に返信
> CSV形式ではないようにも思うのですが?

何を言っているんですか?

例えば、メモ帳で以下のような内容の csv ファイルを作ってそれを Office 2003 の Excel で開くと
秒は表示されません。そのことを問題にしているのではないのですか。

2014/2/15 12:12:45
2014/2/15 12:12:46
2014/2/15 12:12:47

であれば、自分の持っている Office 2003 の場合ですが、Excel にその csv ファイルを表示して、問
題のセルをクリックし、[書式(O)」⇒[セル(E)...]で表示される「セルの書式」ダイアログで自分の
望む書式設定(例えば yyyy/MM/dd hh:mm:ss) をするだけの話ですけど。
引用返信 編集キー/
■69977 / inTopicNo.6)  Re[1]: 時刻のCSVファイルへの書き込み
□投稿者/ Azulean (267回)-(2014/02/16(Sun) 01:12:09)
No69971 (沙希 さん) に返信
> 「2014/2/15 12:12:45」などと現在の日時をCSV形式で書き込みしたいのですが、
> 保存されたCSVファイルをExcelで開くと、秒の部分が消えて「2014/2/15 12:12」としか表示されません。

Excel の仕様です。
Excel がそのフィールドを日時と認識し、デフォルトの日時フォーマットを使用します。しかし、そのフォーマットには秒部分が含まれません。
このため、Excel で開いた後にユーザーがセルの書式を変更する必要があります。

参考
http://www.excelist.net/csv/09.html


> これをExcelで普通に「2014/02/15 12:12:45」と表示するにはどのようにすれば良いのですか?
> 教えてください。

"" で囲っても手元の Excel 2010 は日時とみなしてしまうようなので、手立てはないかと思います。
どうしても、それを望むなら、Excel ファイルを出力する方向でお考えいただくことになります。
(あるいは、「Excel の開く」ではなく、「Excel の外部データ取り込み」機能を使って、列に対する書式を指定しながら取り込むことになる)


No69974 (沙希 さん) に返信
> CSV形式ではないようにも思うのですが?

CSV は「カンマで区切られた値」以上の意味を持ちません。
そのデータをどのように解釈し、表示するかはアプリケーションの仕様次第です。
「CSV に対する Excel の仕様」が「希望する結果にできない」理由です。
引用返信 編集キー/
■69979 / inTopicNo.7)  Re[1]: 時刻のCSVファイルへの書き込み
□投稿者/ 沙希 (3回)-(2014/02/16(Sun) 11:00:05)
皆様ありがとうございます。
色んなこと教えていただき本当に嬉しいです。

オショウ様のおっしゃる文字列として出力したいと思います。
そこで試してみたのですが具体的にはどのように書けばよいのか? 分りません。
教えてください、お願いします。

引用返信 編集キー/
■69980 / inTopicNo.8)  Re[2]: 時刻のCSVファイルへの書き込み
□投稿者/ Azulean (268回)-(2014/02/16(Sun) 11:15:23)
No69979 (沙希 さん) に返信
> オショウ様のおっしゃる文字列として出力したいと思います。
> そこで試してみたのですが具体的にはどのように書けばよいのか? 分りません。

"2014/02/15 12:12:45",123

このように、ダブルクオートをつけた形で出力することを意味していると考えています。
しかし、私の手元の Excel 2010 は前回の投稿で以下のように記述したように「日時と解釈される」ので、効果はありませんでした。

> "" で囲っても手元の Excel 2010 は日時とみなしてしまうようなので、手立てはないかと思います。
引用返信 編集キー/
■69984 / inTopicNo.9)  Re[2]: 時刻のCSVファイルへの書き込み
□投稿者/ WebSurfer (187回)-(2014/02/16(Sun) 11:50:42)
No69979 (沙希 さん) に返信

> オショウ様のおっしゃる文字列として出力したいと思います。

「文字列として出力」とは、何から文字列を取得して、どこに、どのよう
な形式で出力したいのか、具体的に、回答者は掲示板に書いてあること以
外何も知りえないということを認識した上で、書いてもらえませんか?

あと、回答をもらったら、できれば全ての回答に対して、それが役に立っ
たか、理解できたかぐらいは書いていただくようお願いします。
引用返信 編集キー/
■69987 / inTopicNo.10)  Re[2]: 時刻のCSVファイルへの書き込み
□投稿者/ 沙希 (4回)-(2014/02/16(Sun) 13:48:30)
ありがとうございます。

Azulean様
Excelでは日時として解釈されてしまうのですね。
分りました。
諦めます。

WebSurfer様
今後はそのように注意します。

皆様ありがとうございました。
解決済みとさせていただきます。

解決済み
引用返信 編集キー/
■69988 / inTopicNo.11)  Re[3]: 時刻のCSVファイルへの書き込み
□投稿者/ WebSurfer (189回)-(2014/02/16(Sun) 14:53:31)
No69987 (沙希 さん) に返信
> WebSurfer様
> 今後はそのように注意します。

回答者の回答に対してきちんと答えるということは、質問者さんがどこまで理解で
きているのかを回答者が知って、次の回答を質問者さんの理解のレベルに合わせて、
より理解しやすいように書くことができるということで、質問者さんにとって利益
のあることと理解していただければ幸いです。


引用返信 編集キー/
■69989 / inTopicNo.12)  Re[4]: 時刻のCSVファイルへの書き込み
□投稿者/ WebSurfer (190回)-(2014/02/16(Sun) 14:55:12)
解撤済みマークを付け忘れました。スミマセン
解決済み
引用返信 編集キー/
■69999 / inTopicNo.13)  Re[3]: 時刻のCSVファイルへの書き込み
□投稿者/ 魔界の仮面弁士 (532回)-(2014/02/17(Mon) 09:33:06)
2014/02/17(Mon) 09:34:06 編集(投稿者)

No69987 (沙希 さん) に返信
> Excelでは日時として解釈されてしまうのですね。

このほか、"0123" が 123 になってしまうなどの問題もありますので、
CSV データの確認や編集に Excel を使うことはお奨めしません。

Excel 以外のツールを使った方が安全かと思います。

http://hide.maruo.co.jp/software/hidemaru8/new7.html
http://www.asukaze.net/soft/cassava/
http://www.miyab.com/softced3.html
http://kujirahand.com/tools/csvcargo/
http://projectkuto.web.fc2.com/work/kutocsveditor.html
http://www.simosimo.info/tool/
http://smoothcsv.com/



なお、CSVとしての「データ」を優先するのではなく、
Excelでの「見た目」を優先するのであれば、
一応、こういう出力方法もあったりします。

Public Class Form1
 Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  Dim fileName As String = "ABC.CSV"
  Using Writer As New IO.StreamWriter(fileName, True, System.Text.Encoding.Default)
   For i = 0 To 5
    Writer.WriteLine("=""{0:yyyy/MM/dd HH:mm:ss}""", DateTime.Now)
    System.Threading.Thread.Sleep(1000)
   Next i
   Writer.Close()
  End Using
 End Sub
End Class

こうすると、「文字列式」として出力されるため、この CSV ファイルを
ダブルクリックで Excel に読ませても、秒部分まで表示させることができます。
それがデータとして望ましいかどうかは別として。


データ形式を変更することなく、元の CSV を Excel で開きたい場合は、
以下の方法で開くようにすれば、データ形式を壊さずに Excel に読み込ませることができます。

(案1)拡張子を CSV ではなく TXT にした上で、Excel の[ファイル]メニューからそれを開くようにする。

(案2)新規ワークブックを開いて、[データ]-[外部データの取り込み]で CSV ファイルを選択する。


いずれも、ファイルのダブルクリックで開くわけではないことに注意してください。

このように開くと、Excelの『テキスト ファイル ウィザード』が開きますので、
データの書式を「文字列」と指定しながら読み取らせることが可能です。
解決済み
引用返信 編集キー/
■70013 / inTopicNo.14)  Re[5]: 時刻のCSVファイルへの書き込み
□投稿者/ 沙希 (5回)-(2014/02/17(Mon) 19:00:38)
WebSurfer 様

ありがとうございます。
今後ともよろしくお願いします。

解決済み
引用返信 編集キー/
■70014 / inTopicNo.15)  Re[4]: 時刻のCSVファイルへの書き込み
□投稿者/ 沙希 (6回)-(2014/02/17(Mon) 19:04:38)
魔界の仮面弁士 様

教えていただいた方法もやってみました。
修正もしたかったのですみません。

>このほか、"0123" が 123 になってしまうなどの問題もありますので、
>CSV データの確認や編集に Excel を使うことはお奨めしません。

万能ではないのですね。
もっと安易に考えてました
(案1) の拡張子を CSV ではなく TXT にて対処することにします。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -