質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1169閲覧

CSVからEPPlusを使用して時刻をコピーした時、ただの文字列として認識されてしまいます

Wind

総合スコア442

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/12/05 08:25

#困っていること
CSVに入っている時刻をEPPlusを使用してxlsxファイルにコピーした時に、
時刻がただの文字列として保存されていて、時刻として扱えない。

#CSVファイルの中身
13:00,1.0,
13:05,2.0,
13:10,3.0,

#Excelでの表示
##コピーしたxlsxファイルを開いた時

時刻
13:001.0
13:052.0
13:103.0

Excelでxlsxファイルを開いた時はただの文字列として入っていて、左詰めになっています。
一度時刻のセルに合わせてF2キーを押してからEnterキーを押せば、時刻の形式になります。

##CSVファイルを直接開いた時
CSVファイルをExcelで直接開いた時は、時刻の形式になっています。

時刻
13:001.0
13:052.0
13:103.0

#ソースコード

C#

1// List<string[]> PlstCSV_Data = new List<string[]>(); // CSVをそのまま文字列として格納 2 3 sheet.Cells[i + 1, j + 1].Value = Convert.ToString(PlstCSV_Data[i][j]); // 時刻 4 sheet.Cells[i + 1, j + 1].Value = Convert.ToDouble(PlstCSV_Data[i][j]); // 値

###試したこと
時刻の文字列を一度DateTime形式に変換してみましたが、変わりませんでした。

C#

1 DateTime dt = Convert.ToDateTime(PlstCSV_Data[i][j]); 2 sheet.Cells[i + 1, j + 1].Value = dt.ToString("HH:mm");

#知りたい事
時刻の文字列をEPPlusでコピーした時、
Excelに時刻として認識させるにはどうすれば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ググっただけですが、このような感じでいけないでしょうか?

sheet.Column(1).Style.Numberformat.Format = "hh:mm";

https://stackoverflow.com/questions/26137323/how-do-i-convert-a-string-based-time-to-hhmm-format-in-excel-using-epplus

投稿2018/12/05 08:42

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Wind

2018/12/05 08:49

回答ありがとうございます! 時刻を入れた後にセルの書式を設定してみましたが、変わりませんでした・・・。 sheet.Cells[i + 1, j + 1].Style.Numberformat.Format = "hh:mm";
takabosoft

2018/12/05 09:03 編集

参考リンク先がTimeSpan型にパースしてからValueに代入していたので、そのようにやってみてはいかがでしょう? var someTime = "10:10:00"; var timeSpan = TimeSpan.Parse(someTime); sheet.Cells[1, 1].Value = timeSpan; sheet.Column(1).Style.Numberformat.Format = "hh:mm";
Wind

2018/12/05 09:07

何度もありがとうございます! TimeSpan型を使うことで、時刻として読み込むことが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問